使用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
有什么想法吗?谢谢你的帮助。
答案 0 :(得分:0)
可能是您正在寻找的东西:
$im->setBackgroundColor(new ImagickPixel('transparent'));
答案 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;