我在将pdf转换为jpeg时发现了一个非常有线的东西,所以我想弄清楚这可能是一个小错误。 看下面转换的jpg,你会发现,背景颜色都是黑色的。 图像在这里:www.shdowin.com/public/02.jpg
但是,在pdf的源文件中,您可以看到背景颜色为正常白色。 图片如下:www.shdowin.com/public/normal.jpg
我认为这可能是我的pdf文件的错,但是,当我尝试在.NET环境中使用Acrobat.pdf2image时,转换后的jpg显示正确。
这是我的代码:
from wand.image import Image
from wand.color import Color
import os, os.path, sys
def pdf2jpg(source_file, target_file, dest_width, dest_height):
RESOLUTION = 300
ret = True
try:
with Image(filename=source_file, resolution=(RESOLUTION,RESOLUTION)) as img:
img.background_color = Color('white')
img_width = img.width
ratio = dest_width / img_width
img.resize(dest_width, int(ratio * img.height))
img.format = 'jpeg'
img.save(filename = target_file)
except Exception as e:
ret = False
return ret
if __name__ == "__main__":
source_file = "./02.pdf"
target_file = "./02.jpg"
ret = pdf2jpg(source_file, target_file, 1895, 1080)
对此问题的任何建议?
我已将pdf上传到网址: 02.pdf
你可以试试......
答案 0 :(得分:2)
一个简单的解决方案是更改命令的顺序:首先将格式更改为jpeg然后调整大小
img.format = 'jpeg'
img.resize(dest_width, int(ratio * img.height))
通过分辨率元组打开精确大小的PDF也很容易,因为分辨率可以是浮点数。
答案 1 :(得分:2)
对于仍然遇到此问题的其他人,我使用谷歌搜索并尝试了几个小时,感谢这个问题https://stackoverflow.com/a/40494320/2686243使用这两行:
img.background_color = Color("white")
img.alpha_channel = 'remove'
尝试使用Wand版本0.4.4
答案 2 :(得分:1)
我自己得到了答案。这是因为alpha_channel案例。这个pdf包括一些透明背景(在我转换为png格式之后),并且对于调整大小,ImageMagick选择最佳调整大小的滤镜,因此显示黑色背景。
所以,经过大量的实验,我发现只需在“with”语句中添加“img.alpha_channel = False”(在img.save()之前),这样就可以正常工作。
感谢VadimR的建议,这很有帮助。