PHP, GD и прозрачность GIF
При изменении размера GIF изображений в PHP с помощью библиотеки GD, цвет прозрачности заменяется на черный. Это не баг, это жизнь, но исправить это можно :) Для этого надо определить индекс цвета прозрачности у исходного изображения, и вставить его в палитру нового, уменьшенного, изображения. Код который это делает приведен ниже, сразу после него можно выполнять знакомый ImageCopyResampled($dst_image, $src_image, ...)
PHP:
-
//Begin Transparent Color Resize Correction for Gif and 8bit Png, by Martin Schmidt
-
$colorcount = imagecolorstotal($src_image);
-
imagetruecolortopalette($dst_image,true,$colorcount);
-
imagepalettecopy($dst_image,$src_image);
-
$transparentcolor = imagecolortransparent($src_image);
-
imagecolortransparent($dst_image,$transparentcolor);
-
//End Transparent Color Resize Correction
Правда получившаяся картинка будет выглядеть достаточно грубо, поэтому в будущем, надеюсь, попадётся в сети решения для более качественной обработки.

