Commit 1f2d77b3 authored by Gábor Hojtsy's avatar Gábor Hojtsy
Browse files

#200338 by m3avrck and quicksketch: fix transparent GIF resizing

parent b7a2becd
......@@ -80,7 +80,7 @@ function image_gd_resize($source, $destination, $width, $height) {
return FALSE;
}
$res = imageCreateTrueColor($width, $height);
$res = imagecreatetruecolor($width, $height);
if ($info['extension'] == 'png') {
$transparency = imagecolorallocatealpha($res, 0, 0, 0, 127);
imagealphablending($res, FALSE);
......@@ -88,11 +88,29 @@ function image_gd_resize($source, $destination, $width, $height) {
imagealphablending($res, TRUE);
imagesavealpha($res, TRUE);
}
imageCopyResampled($res, $im, 0, 0, 0, 0, $width, $height, $info['width'], $info['height']);
elseif ($info['extension'] == 'gif') {
// If we have a specific transparent color.
$transparency_index = imagecolortransparent($im);
if ($transparency_index >= 0) {
// Get the original image's transparent color's RGB values.
$transparent_color = imagecolorsforindex($im, $transparency_index);
// Allocate the same color in the new image resource.
$transparency_index = imagecolorallocate($res, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
// Completely fill the background of the new image with allocated color.
imagefill($res, 0, 0, $transparency_index);
// Set the background color for new image to transparent.
imagecolortransparent($res, $transparency_index);
// Find number of colors in the images palette.
$number_colors = imagecolorstotal($im);
// Convert from true color to palette to fix transparency issues.
imagetruecolortopalette($res, TRUE, $number_colors);
}
}
imagecopyresampled($res, $im, 0, 0, 0, 0, $width, $height, $info['width'], $info['height']);
$result = image_gd_close($res, $destination, $info['extension']);
imageDestroy($res);
imageDestroy($im);
imagedestroy($res);
imagedestroy($im);
return $result;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment