Изменяем размеры картинки с сохранением прозрачности (PHP+GD)
Friday, January 30th, 2009 | PHP | 1 Comment »По умолчанию при изменении размеров полупрозраных (и прозрачных) картинок вместо прозрачного фона получается заливка цветом. Это негативно сказывается на внешнем виде изображения и нервах. Поэтому я расскажу, как сохранять прозрачность.
Итак, для этого нам понадобятся следующие функции:
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)
Код в результате выглядит примерно так:
-
imagealphablending($newImg, false);
-
imagesavealpha($newImg,true);
-
$transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
-
imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);
Так что мою старую функцию можно доработать так, чтобы она сохраняла прозрачность картинок. Заодно и тип файла можно проверять не по расширению, а по тому, что вернет getimagesize (исходя из приведенного выше примера - это элемент $imgInfo[2]).

