目前我通过将PDF文件转换为PNG遇到了几个问题。 源pdf文件中的透明度会丢失。
我测试了以下终端工具来创建png: 来自poppler-tools的GhostScript,Imagemagick和pdf工具,总是在debian系统上。
图像应与pdf具有相同的尺寸,也是相同的透明度。
使用了命令:
gs -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=test%d.png -r96 -q design.pdf -c quit
convert design.pdf test%d.png
convert design.pdf -channel rgba -alpha on PNG32:test%d.png
convert -background none -colorspace srgb design.pdf -colorspace srgb -channel rgba -alpha on PNG32:test%d.png
pdftoppm -png file.pdf test
结果不是具有透明度的预期png。背景为白色,应该是100%透明的。另外还有一个绿色条,应该是半透明的。在我的所有尝试中,结果都是一个没有透明度的浅绿色框。
要查看我的结果,我已上传源pdf,错误创建的png和预期结果(从photoshop导出)。
PDF: http://speedy.sh/W75HP/source-file.pdf
Result: http://speedy.sh/hfZMt/faulty-created-design.png
Expected: http://speedy.sh/7mpEk/design-the-way-it-should-be.png
我设法让白色背景透明,但实际的文件透明度(包括半透明的绿色条/盒)未正确转换。
我的问题的解决方案是什么?
祝你好运, 克里斯
// UPDATE 好的,我们已经找到了另一个第三方工具的解决方案,它可以轻松地产生我预期的结果。
inkscape design.pdf -z --export-dpi=100 --export-png=design.png
寻求帮助
答案 0 :(得分:0)
使用Imagick(PHP扩展)我将背景颜色转换为透明,并使用这样的代码(我将带有白色背景的JPG转换为透明PNG):
$mask = new Imagick('/your/file/path.jpg');
$mask->setImageFormat('png');
$mask->paintTransparentImage('white', 0, 1000); // $fuzz = 1000 (3rd parameter) is just a guess
看看这里: http://de3.php.net/manual/en/imagick.painttransparentimage.php
对应的Imagick文档: http://www.imagemagick.org/script/command-line-options.php#transparent
此致 迈克尔