php img拇指未调整大小

时间:2018-10-02 08:50:37

标签: php image thumbnails

我有代码可以使原始图像表单用户赞叹不已。我需要拇指的硬核宽度和高度为160 x160。我的问题不是完美的图片。我的意思是,当用户要添加的img宽度大于高度时,我的缩略图看起来不好并且被拉伸了;而当原始img的宽度大于宽度时,发生了相似性,则拇指被严重压缩。我以为我必须使用函数imagecopyresampled()进行操作,但是我认为这是一个糟糕的选择。我的问题是:怎么做才能使拇指不被压缩或拉伸并切开手指?从原始图像的中心? 我的代码现在看起来像这样:

$imgOrginalsize = getimagesize($file);
        $ratio = $imgOrginalsize[0] / $imgOrginalsize[1];
        $h = 160;
        $w = 160;

 $file_name = basename($file);

        switch (strtolower($imgOrginalsize['mime'])) {
            case 'image/jpeg':
                $img = imagecreatefromjpeg($file);
                $new = imagecreatetruecolor($w, $h);
                imagecopyresampled($new, $img, 0, 0, 0, 0, $w, $h, $imgOrginalsize[0], $imgOrginalsize[1]);
                imagejpeg($new, $pathToSave . $file_name, 100);
                imagedestroy($new);
                break;
            case 'image/png':
                $img = imagecreatefrompng($file);
                $new = imagecreatetruecolor($w, $h);
                imagecopyresampled($new, $img, 0, 0, 0, 0, $w, $h, $imgOrginalsize[0], $imgOrginalsize[1]);
                imagepng($new, $pathToSave . $file_name, 100);
                imagedestroy($new);
                break;
            default:
                var_dump('error default');
                exit();
        }

现在拇指看起来很糟糕,例如被压缩了-原始img更高了,oyu知道我的意思是我不需要所有图片的缩略图-我可以从左上角(或从原始img的中心)裁剪出来,但是我不想压缩或拉伸它:

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试imagecrop($ img,['x'=> 0,'y'=> 0,'width'=> $ size,'height'=> $ size]);

请参见documentation

将$ size替换为所需的宽度/高度

该链接还提供了一个如何居中的示例。