{% else-1 %}
Я думаю ни для кого не секрет, что в PNG реализована поддержка альфа канала. То есть цвет задается четырьмя компонентами: R (красный), G (зеленый), B (синий), альфа. Альфа канал задает прозрачность конкретного пикселя.
А вот GIF-е прозрачность реализована по-другому. В нем один из используемых цветов (любой, на выбор автора картинки) объявляется как прозрачный, и при отрисовке данной картинки пиксели имеющие данный цвет заменяются прозрачными пикселями.

                        
Ресайзим PNG
<?php
// Путь и имя изображения
$src = '/imgs/izobrazhenie.png';
$source_resource = imagecreatefrompng($src);

//Создаем полноцветное изображение
$destination_resource = imagecreatetruecolor($newwidth, $newheight);

//Отключаем режим сопряжения цветов
imagealphablending($destination_resource, false);

//Включаем сохранение альфа канала
imagesavealpha($destination_resource, true);

//Ресайз
imagecopyresampled($destination_resource, $source_resource, 0, 0, 0, 0, $newwidth, $newheight, $oldwidth, $oldheight);

//Сохранение
imagepng($destination_resource, $destination_path);
?>

Ресайзим GIF
<?php
// Путь и имя изображения
$src = '/imgs/izobrazhenie.gif';
$source_resource = imagecreatefromgif($src);
//Создаем изображение, кстати для GIF можно использовать обычную imagecreate, но лучше все таки везде использовать imagecreatetruecolor
$destination_resource = imagecreatetruecolor($newwidth, $newheight);

//Получаем прозрачный цвет
$transparent_source_index = imagecolortransparent($source_resource);

//Проверяем наличие прозрачности
if($transparent_source_index != -1){
$transparent_color = imagecolorsforindex($source_resource, $transparent_source_index);

//Добавляем цвет в палитру нового изображения, и устанавливаем его как прозрачный
$transparent_destination_index = imagecolorallocate($destination_resource, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
imagecolortransparent($destination_resource, $transparent_destination_index);

//На всякий случай заливаем фон этим цветом
imagefill($destination_resource, 0, 0, $transparent_destination_index);
}

//Ресайз
imagecopyresampled($destination_resource, $source_resource, 0, 0, 0, 0, $newwidth, $newheight, $oldwidth, $oldheight);

//Сохранение
imagegif($destination_resource, $destination_path);
?>
9 41 0
0

Нет фото
• 2 авг 2013, 00:24


хорош *