PHP GD:图像重新大小与一些黑色矩形


PHP GD :image re size with some black rectangles?

我正试图完成这个任务2天,阅读各种各样的东西在网上,但仍然找不到发生了什么,也阅读所有这里在SO关于类似的问题,但没有。

我有图像400x400,并希望生成120x120使用php gd。使用以下代码:

                    $image_p = imagecreatetruecolor(120,120);
        $image = imagecreatefromstring($X_IMAGE);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, 120, 120, 400, 400);
    // RETURN
            header('Content-Type: image/jpeg');
            imagejpeg($image_p, null, 70);
            //destroy...

$X_IMAGE为400x400 JPG格式,存储为字符串。所有的图片都是在120x120的尺寸下生成的,但是大多数图片的底部都有一个黑色的矩形,有些图片的底部大一些,有些图片的底部小一些,但是50%的图片都有这个矩形。所以所有的都是可见的,只是图像的一部分被黑色覆盖。如何解决我的问题?所有的源图片都是JPG格式我需要的120x120的图片也是JPG格式的你们可以看到。

问题是您的原始图像不是正方形!你将400x400传递给imagecopyresampled,但原始图像的高度可能不是400px!

例如,在您发布的图像中,您有一个非平方原始图像。当您告诉PHP在另一个图像资源上重新采样一个正方形时,您将重新采样该图像加上底部不存在的矩形。

解决方案取决于您想要输出的内容。

  • 你想要一个保持比例的缩放图像吗?例如,从400x300到120x90。
  • 或缩放图像不保持比例?例如,从400x300到扭曲的120x120?
  • 还是裁剪的缩略图?400x300到120x120与左右部分修剪出来一点?
  • 你想用白色矩形替换黑色矩形,所以用那种方式填充重新采样的图像吗?