Изменяем размеры картинки с сохранением прозрачности (PHP+GD)
По умолчанию при изменении размеров полупрозраных (и прозрачных) картинок вместо прозрачного фона получается заливка цветом. Это негативно сказывается на внешнем виде изображения и нервах. Поэтому я расскажу, как сохранять прозрачность.
Итак, для этого нам понадобятся следующие функции:
imagecolorallocatealpha
int imagecolorallocatealpha ( resource $image, int $red, int $green, int $blue, int $alpha)imagealphablending
bool imagealphablending ( resource $image, bool $blendmode)imagesavealpha
bool imagesavealpha ( resource $image, bool $saveflag)
Код в результате выглядит примерно так:
PHP:
-
imagealphablending($newImg, false);
-
imagesavealpha($newImg,true);
-
$transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
-
imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);
Так что мою старую функцию можно доработать так, чтобы она сохраняла прозрачность картинок. Заодно и тип файла можно проверять не по расширению, а по тому, что вернет getimagesize (исходя из приведенного выше примера - это элемент $imgInfo[2]).


February 1st, 2009 at 21:37 Quote
Спасибо. Недавно столкнулся с подобной проблемой, но решение было не найдено, а необходимость исчезла в скором времени.) Теперь буду "вооружен" знанием)