| Переворачиваю изображение (png) при помощи imagerotate и налаживаю на него сверху другое изображение без поворотов. Вот пример http://pickboom.ru/kot/ . Иногда работает как полагается а иногда, когда изображение поворачивается на 0, 45, 135, 225, 315 градусов с верхнего изображения пропадает прозрачность.
Подскажите в чем может быть беда?
//создаем произвольное изображение
$im = imagecreatetruecolor(300,300);
//заливаем произвольным цветом
$col = imagecolorallocate($im, 125, 178, 240);
imagefill($im, 0, 0, $col);
$img1 = imagecreatefrompng("cat.png");
$imass = rand(0,6);
//реализуем массив размерностью 8 значением 45 градусов
$rand = array(45, 90, 135, 180, 225, 270, 315);
$rotate = imagerotate($img1, $rand[$imass], imagecolorat($img1,0,0));
//прозрачность доля фонового изображения
imagesavealpha($rotate,true); // ключевая функция для прозрачности
imagefill($rotate ,0,0,IMG_COLOR_TRANSPARENT);
//создаем прозрачное изображение
$ims = imagecreatetruecolor(300,300);
//цвет заливки прозрачный
$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($ims, $black);
imagefill($ims, 0, 0, $black);
//накладываем прозрачное изображение на первое
imagecopymerge($im, $ims, 0, 0, 0, 0, 300, 300, 100);
//прозрачность для внутреннего изображения
$img2=imageCreateFromPNG("cat2.png");
$im2 = imagecreatetruecolor(300,300);
imagesavealpha($img2,true); // ключевая функция для прозрачности
imagefill($img2 ,0,0,IMG_COLOR_TRANSPARENT);
//создаем прозрачное изображение
$ims2 = imagecreatetruecolor(300,300);
//цвет заливки прозрачный
$black = imagecolorallocate($im2, 0, 0, 0);
imagecolortransparent($ims2, $black);
imagefill($ims2, 0, 0, $black);
//накладываем прозрачное изображение на первое
imagecopymerge($im2, $ims2, 0, 0, 0, 0, 300, 300, 100);
// Определяем размеры
$size_x=imageSX($rotate);
$size_y=imageSY($rotate);
// Копируем рисунок целиком из первого изображения во второе
imageCopy($rotate,$img2,0,0,0,0,$size_x,$size_y);
|
| |