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

Форум PHP

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

 

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

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

тема: Прозрачный фон в gif из png
 
 автор: ROC8   (14.06.2009 в 14:34)   письмо автору
 
 

Подскажите, почему не выводится прозрачный фон?
$im=@imagecreatefrompng($dir.$file.'.png');

if(!$im)
{
$im=errorimg();
}
else
{
//прозрачность
$tcl=imagecolorallocate($im,0,255,255);
imagecolortransparent($im,$tcl);
}

header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);

  Ответить  
 
 автор: Zend72   (14.06.2009 в 15:15)   письмо автору
 
   для: ROC8   (14.06.2009 в 14:34)
 

Судя по тому, что написано в документации:



Список параметров

image 

An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().



http://ru2.php.net/imagecolortransparent

Вам придется использовать imagecreatetruecolor()
Затем imagecolortransparent()
И копировать на полученное imagecreatetruecolor() ваше изображение с помощью imagecopymerge()
Тогда должна появиться прозрачность...


<?php

$im_true_color 
imagecreatetruecolor 100 100 );
$im_from_png imagecreatefrompng('test.png');
//прозрачность 
$tcl=imagecolorallocate($im_true_color,0,255,255); 
imagecolortransparent($im_true_color,$tcl);
imagecopymerge $im_true_color $im_from_png 100 100 100 );
header('Content-Type: image/gif');
imagegif($im_true_color);

imagedestroy($im_true_color);
imagedestroy($im_from_png);

?>

  Ответить  
 
 автор: ROC8   (14.06.2009 в 15:28)   письмо автору
 
   для: Zend72   (14.06.2009 в 15:15)
 

Так я же в gif сохраняю (8 бит), зачем мне создавать truecolor (24 бита)? Разве открываемый png не truecolor, может наоборот в палитру надо переводить?

  Ответить  
 
 автор: ROC8   (14.06.2009 в 15:30)   письмо автору
 
   для: Zend72   (14.06.2009 в 15:15)
 

Так я же в gif сохраняю (8 бит), зачем мне создавать truecolor (24 бита)? Разве открываемый png не truecolor, может наоборот в палитру надо переводить?

  Ответить  
 
 автор: Zend72   (14.06.2009 в 15:35)   письмо автору
 
   для: ROC8   (14.06.2009 в 15:30)
 

Вот вам код. Цвет rgb(0,255,255) действительно стал прозрачным.

>Так я же в gif сохраняю (8 бит), зачем мне создавать truecolor (24 бита)?

Затем, что в документации так написано. А именно: у imagecolortransparent() первым параметром может быть только дескриптор врзвращенный функцией imagecreatetruecolor().

  Ответить  
 
 автор: ROC8   (14.06.2009 в 15:59)   письмо автору
 
   для: Zend72   (14.06.2009 в 15:35)
 

Извините, с первого взгляда как-то нелогично выглядит. Спасибо, все работает отлично.

  Ответить  
 
 автор: Zend72   (14.06.2009 в 16:58)   письмо автору
 
   для: ROC8   (14.06.2009 в 15:59)
 

Незачто. Хорошо, что работает ;-)

  Ответить  
Rambler's Top100
вверх

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