使用Imagick转换透明PDF文件

时间:2012-10-04 07:53:48

标签: php imagick

使用PHP和imagick创建缩略图时遇到问题。代码工作正常,缩略图以正确的大小等生成,但当我尝试在缩略图上放置PDF徽标时,它变为半透明。我想这与在InDesign中生成的PDF文件有关,它可能没有定义任何背景。有没有人遇到过这个问题或者想知道怎么办?我试图在后台放一块白色帆布,但这没有帮助。我还为compositeImage函数指定了一个通道,但这也没有帮助。

这是我遇到问题的PDF文件:https://dl.dropbox.com/u/13712643/Case_Study.pdf 生成的缩略图如下所示: https://dl.dropbox.com/u/13712643/Case_Study1.jpg

到目前为止我制作的代码:http:// pastebin.com/74CYC972

有什么想法吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

可能是您正在寻找的东西:

$im->setBackgroundColor(new ImagickPixel('transparent')); 

http://www.php.net/manual/en/imagick.setbackgroundcolor.php

答案 1 :(得分:0)

我遇到了同样的问题,我使用Imagick::compositeImage

中找到的php imagick convert PNG to jpg解决了这个问题

代码如下:

$im = new Imagick();
$im->readimage($pdfFile."[$currentPage]");
$res = $im->getimageresolution();

$bg = new Imagick();
$bg->setresolution($res["x"],$res["y"]); //setting the same image resolution

//create a white background image with the same width and height
$bg->newimage($im->getimagewidth(), $im->getimageheight(), 'white');
$bg->compositeimage($im, Imagick::COMPOSITE_OVER, 0, 0); //merging both images
$bg->setimageformat("png");

//then you can write to a file
$bg->writeImage('white-background-pdf-image.png');

//or output it
header('Content-type: image/png');
echo $bg;