【问题标题】:PHP imagick gif to jpg - backgroundPHP imagick gif 到 jpg - 背景
【发布时间】:2015-03-25 02:32:01
【问题描述】:

我有这个 gif:

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

(白色背景)

【问题讨论】:

  • 你的$save_as 变量中有什么?另外,为什么$im2
  • $save_as = "example.jpg";
  • 对不起,$im 不是 $im2
  • 好的,澄清一下...您想将渲染的 jpg 重命名为 2.jpg,是吗?
  • 不,我想将 gif 渲染为 jpg。但是有白色背景

标签: php jpeg gif imagick alpha-transparency


【解决方案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(); 

【讨论】:

  • 你能解释一下为什么你使用11而不是Imagick constants吗?尤其是 11 是什么意思?
  • 我用 11 代替了常量,因为它是一个通道,而不是颜色。 11 是要更改的频道数。
  • 我不确定我是否理解......有像Imagick::ALPHACHANNEL_SET这样的常量。
  • 其实我相信11是Imagick::ALPHACHANNEL_REMOVE的值,见:php.net/manual/en/imagick.flattenimages.php#116956
  • 你是对的,也许11是imagick类中用于减少类代码的常量的数量。我真的不知道
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 2013-07-26
  • 2021-07-29
  • 2014-05-11
  • 2013-07-07
  • 2012-12-21
相关资源
最近更新 更多