【问题标题】:PHP check & resize image to meet Instagram requirementsPHP 检查和调整图像大小以满足 Instagram 要求
【发布时间】:2021-05-06 15:41:52
【问题描述】:

Instagram 图片比例要求是:

  • 1:1
  • 4:5
  • 1.91:1
  • 16:9

已阅读 herehereThe 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;
}

问题:

  1. 此代码严格检查它不完全符合 Instagram 文档“(...) with a 4:5 to 1.91:1 range”的比率值。这样可以吗?
  2. 如果比率无效,我如何使用 Resize 功能应用符合 Instagram 要求的最佳比率?

【问题讨论】:

  • 答案 1:行不行,看你自己。这是你的代码。答案 2:您尝试过调整图像大小的方法是什么?你遇到了什么问题?
  • 这不取决于我。我刚刚测试过,图片大小 570x370 发布到 Instagram,但计算出的比例是 57:37,所以没有意义。我需要帮助正确检查比率。
  • 那是小学数学。 57:37 = 1.54:1,有点接近 16:9。

标签: php laravel instagram


【解决方案1】:

已解决

检查纵横比的代码不正确。要正确检查它,我们需要做的就是将宽度除以高度,看看它是否符合 Instagram 要求的范围。

function isRatioValid(...)
{
    $width = 400;
    $height = 711;

    // 1:1 - squares
    if ($width == $height)
        return true;
            
    $ratio = round($width / $height, 3);
        
    // Portrait: min 0.8 | max 0.99
    // Landscape: min 1.01 | max 1.91   
    if ($width < $height)
        if ($ratio >= 0.8 && $ratio <= 0.99)
            return true;
            
    if ($width > $height)
        if ($ratio >= 1.01 && $ratio <= 1.91)
            return true;
    
    return false;
}

为了调整它的大小,我将宽度(肖像)或高度(风景)增加了 0.10直到宽高比在该范围内。您应该限制尝试次数,以免消耗 CPU / 最大执行时间。

【讨论】:

    猜你喜欢
    • 2014-09-12
    • 2018-03-31
    • 2011-09-11
    • 2011-11-25
    • 2012-01-09
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多