【发布时间】:2021-05-06 15:41:52
【问题描述】:
Instagram 图片比例要求是:
- 1:1
- 4:5
- 1.91:1
- 16:9
已阅读 here 和 here。 The documentation 还说:
(...) 建议应用用户使用不符合标准的图片重试 4:5 到 1.91:1 范围。
虽然文档没有说,但我知道以 1:1 的比例发布照片是可行的。
所以我想检查上传的图片是否符合要求,如果没有调整大小以满足要求(通过缩小或放大)。我将 Laravel 与 Image Intervention library 一起使用。
要检查纵横比,我使用以下代码:
public function isRatioValid($img)
{
$manager = new ImageManager(['driver' => 'imagick']);
$image = $manager->make($img);
$width = $image->width();
$height = $image->height();
for ($i = $height; $i > 1; $i--)
{
if (($width % $i) == 0 && ($height % $i) == 0)
{
$width = $width / $i;
$height = $height / $i;
}
}
$ratio = "{$width}:{$height}";
if (!in_array($ratio, ['1:1', '4:5', '1.91:1', '16:9']))
return false;
return true;
}
问题:
- 此代码严格检查它不完全符合 Instagram 文档“(...) with a 4:5 to 1.91:1 range”的比率值。这样可以吗?
- 如果比率无效,我如何使用 Resize 功能应用符合 Instagram 要求的最佳比率?
【问题讨论】:
-
答案 1:行不行,看你自己。这是你的代码。答案 2:您尝试过调整图像大小的方法是什么?你遇到了什么问题?
-
这不取决于我。我刚刚测试过,图片大小 570x370 发布到 Instagram,但计算出的比例是 57:37,所以没有意义。我需要帮助正确检查比率。
-
那是小学数学。 57:37 = 1.54:1,有点接近 16:9。