调整大小的GIF图像变为黑色

时间:2013-12-07 01:25:08

标签: php gd gif

我有一个调整上传图片大小的脚本。我添加了一些说明,将GIF中的任何透明度转换为白色。它通常工作正常,但在某些情况下,调整大小的GIF是完全黑色的。 (请注意,我正在将这些图像用于PDF,因此我无法使用CSS来处理此问题......)。无论如何,我是PHP图像处理的新手,所以我不知道如何解决这个问题。

以下是两个示例GIF。第一个工作正常,而第二个工作改为黑色。

以下是相关摘录:

elseif ($fileType == 'gif') {
    $src = imagecreatefromgif($file);
    $dst = imagecreatetruecolor($newWidth, $newHeight);
    imagecolortransparent($dst, imagecolorallocatealpha($dst, 0, 0, 0, 127));
    imagealphablending($dst, false);
    imagesavealpha($dst, true);
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); 
    imagegif($dst, $file);
} 

1 个答案:

答案 0 :(得分:0)

首先将您的第二张图片转换为gif格式。为此,使用任何图像处理工具(gimp / photoshop)或代码片段下方的前缀:

// Load the JPEG
$jpeg = imagecreatefromjpeg($file);
// Save the image as a GIF
imagegif($jpeg, $file);

在给定的代码段中,您使用的是imagecolorallocatealpha($ dst,0,0,0,127)函数,它将在图像中添加完全透明度。而不是这样,尝试使用imagecolorallocate($ dst,0,0,0)函数或不在imagecolortransparent()函数中使用颜色参数。