Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP检查与测试;调整图像大小以满足Instagram要求_Php_Laravel_Instagram - Fatal编程技术网

PHP检查与测试;调整图像大小以满足Instagram要求

PHP检查与测试;调整图像大小以满足Instagram要求,php,laravel,instagram,Php,Laravel,Instagram,Instagram图像比率要求如下: 1:1 4:5 1.91:1 16:9 读了又读。还说: (…)建议应用程序用户使用与 4:5到1.91:1的范围 尽管文档中没有说明,但我知道以1:1的比例发布照片是可行的 因此,我想检查上传的图像是否符合要求,如果不调整大小以满足要求(通过缩小或放大)。我用的是拉威尔 为了检查纵横比,我使用以下代码: public function isRatioValid($img) { $manager = new ImageManager(['driv

Instagram图像比率要求如下:

  • 1:1
  • 4:5
  • 1.91:1
  • 16:9
读了又读。还说:

(…)建议应用程序用户使用与 4:5到1.91:1的范围

尽管文档中没有说明,但我知道以1:1的比例发布照片是可行的

因此,我想检查上传的图像是否符合要求,如果不调整大小以满足要求(通过缩小或放大)。我用的是拉威尔

为了检查纵横比,我使用以下代码:

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文档中所述的比率值,该文档中说“(…)的范围为4:5到1.91:1”。这样行吗
  • 如果比率无效,我如何使用该功能应用符合Instagram要求的最佳比率

  • 已解决

    检查纵横比的代码不正确。要正确检查它,我们需要做的就是将宽度除以高度,看看它是否符合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;
    }
    
    函数isRatioValid(…)
    {
    $width=400;
    $height=711;
    //1:1-正方形
    如果($width==$height)
    返回true;
    $ratio=圆形($width/$height,3);
    //纵向:最小0.8 |最大0.99
    //景观:最小1.01 |最大1.91
    如果($width<$height)
    如果($ratio>=0.8&&$ratio$height)
    
    如果($ratio>=1.01&&$ratio回答1:这取决于你是否可以。这是你的代码。回答2:你在调整图像大小方面做了哪些尝试?你遇到了什么问题?这不取决于我。我刚刚测试过,图像大小570x370发布到Instagram,但计算出的比率是57:37,因此没有意义。我需要帮助检查ratio pro这是小学数学,57:37=1.54:1,有点接近16:9。