Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужно сохранить прозрачность при работе с GIF изображениями в GDLib
 
 автор: NIK   (12.09.2007 в 22:28)   письмо автору
 
 

Нужно сохранить прозрачность при работе с GIF изображениями в GDLib. Посмотрел решения на этом форуме, но решил пойти своим путём. Сначала проверил как будет вести себя gif, если сохранить его в png. Код:

$img = "gif+transp+rastr.gif"; 
$img_src = imagecreatefromgif($img);
imagepng($img_src, "img_trans.png");

работает, на выходе получаю PNG с полность аналогичной прозрачностью как в оригинале. Исходя из этого делаю так: создаю полноцветное изображение, заменяю чёрный цвет на прозрачность при помощи imagecolortransparent(), на это созданное изображение копирую прозрачный GIF с помощью imagecopyresampled() и сохраняю в PNG, дабы прозрачные части сохранялись. Вот код:


$img_dst = imagecreatetruecolor(600, 550);
$black = imagecolorallocate($img_dst, 0, 0, 0);
imagecolortransparent($img_dst, $black);

$img = "image.gif"; // original
$img_src = imagecreatefromgif($img);

imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, 600, 550, 600, 550);

imagepng($img_dst, "img_result.png");

echo "<body bgcolor='grey'><img src='img_result.png'>";

Проблема заключается в том, что если на оригинальном изображении имеются черные цвета, то они тоже заменяются на прозрачность. И никак не могу понять почему, ведь я заменяю черный цвет только на изображении $img_dst, а эффект распространяется на весь оригинал $img_src.

Вот к примеру такое изображение: http://zel-writers.zuta.net/image.gif (по идее чёрный квадрат не должен заменяться на прозрачность, а только прозрачный участок в центре). Результат работы скрипта будет таким: http://zel-writers.zuta.net/test.php

Собственно помогите разобраться, почему imagecolortransparent() действует не только на указанное изображение в 1-ом параметре, но и на все последующие изображения? Буду примного благодарен

   
 
 автор: NIK   (14.09.2007 в 14:58)   письмо автору
 
   для: NIK   (12.09.2007 в 22:28)
 

что, никто не подскажет?

   
 
 автор: mihdan   (14.09.2007 в 17:00)   письмо автору
 
   для: NIK   (14.09.2007 в 14:58)
 

Зачем png делайте gif

   
 
 автор: NIK   (14.09.2007 в 18:10)   письмо автору
 
   для: mihdan   (14.09.2007 в 17:00)
 

пробовал разные варианты решения для gif с этого форума - и с разной палитрой и без, но так и не понял. Может покажите на этом куске кода как сделать?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования