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

时间:2011-12-06 08:29:06

标签: php gd

我正在尝试完成这项任务2天,在线阅读各种内容,但仍然无法找出发生了什么,也在这里阅读所有关于类似问题的内容,但没有。

我有400x400的图像,想要使用php gd生成120x120。使用此代码:

                    $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,你可以看到......

1 个答案:

答案 0 :(得分:3)

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

例如,在您发布的图像中,您的原始图像不平整。当您告诉PHP重新采样其他图像资源上的正方形时,您将重新采样图像以及底部不存在的矩形。

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

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