2015-01-26 2 views
1

Я этот GIF:PHP Imagick GIF в JPG - фон

https://dl.dropboxusercontent.com/u/76885657/stackoverflow/2.gif 

(прозрачный фон)

И с этим кодом:

$im = new Imagick();  
$im->readimage("example.gif");  
$im->setImageAlphaChannel(11);  
$im->setImageBackgroundColor('white');  
$im->setImageFormat("jpg");  
$im->stripImage();  
$im->writeImage("example.jpg");  
$im->clear();  
$im->destroy(); 

Результаты:

https*://dl.dropboxusercontent.com/u/76885657/stackoverflow/3.jpg(without *) 

(золотой фон)

Но хотите:

https://dl.dropboxusercontent.com/u/76885657/stackoverflow/2.jpg 

(белый фон)

+0

Что в вашем '$ save_as' вар? Кроме того, почему '$ im2'? –

+0

$ save_as = "example.jpg"; – lucasgabmoreno

+0

Извините, это $ im not $ im2 – lucasgabmoreno

ответ

1

Я нашел его. Был заказ !:

$im = new Imagick();  
$im->readimage("example.gif"); 

// Неправильно

$im->setImageBackgroundColor('white'); 
$im->setImageAlphaChannel(11); 

// Записываем !!!

$im->setImageAlphaChannel(11);  
$im->setImageBackgroundColor('white'); 

// Остальной код ...

$im->setImageFormat("jpg");  
$im->stripImage();  
$im->writeImage("example.jpg");  
$im->clear();  
$im->destroy(); 
+0

Не могли бы вы объяснить, почему вы использовали '11' вместо констант Imagick (http://php.net/manual/en/imagick.constants.php#imagick.constants.alphachannel)? И особенно, что означает 11? – aross

+0

Я использовал 11 вместо констант, потому что это канал, а не цвет. 11 - номер канала для изменения. – lucasgabmoreno

+0

Я не уверен, что понимаю ... есть константы типа «Imagick :: ALPHACHANNEL_SET». – aross

Смежные вопросы