我正在尝试使用魔杖将PDF转换为JPG。
我想根据docHeight来调整jpg的大小,docHeight是一个全局变量。
jpg的大小将由最大维度与其将被放置的目标页面的比率确定。
我似乎从起跑门失败了,我无法弄清楚原因。
似乎我的with语句中没有读取该文件。
my with Image语句返回
>>>>with Image(filename = thumbOriginal, resolution = (RESOLUTION,RESOLUTION)) as img:
print img
'NoneType' object has no attribute '__getitem__'
我如何阅读文件有什么问题?
主要是从this question借来的。我几乎找不到有关如何正确进行此转换的任何信息。
with Image(filename = thumbOriginal, resolution = (RESOLUTION,RESOLUTION)) as img:
print img # prints 'NoneType' object has no attribute '__getitem__'
img_width = img.width
print "img_width: "+str(img_width) # prints 0 if I comment out "print img" statement
img_height = img.height
print "img_height: "+str(img_height) # prints 0 if I comment out "print img" statement
if img_width > img_height:
ratio = float(dest_width / img_width) # Fails for float divided by 0 if I comment out "print img" statement
else: ratio = float(dest_height / img_height) # Fails for float divided by 0 if I comment out "print img" statement
img.resize(int(ratio*img_width), int(ratio *img.height))
img.alpha_channel = False
img.format = 'jpg'
img.save(filename = thumb)
我还尝试过在a different stackoverflow question找到的更简单的版本:
with Image(filename = thumbOriginal, resolution = 300) as img:
print img
img.compression_quality = 99
img.save(filename=thumb)
但我得到了同样的错误
'NoneType' object has no attribute '__getitem__'
我知道pdf就在那里。我可以手动打开它,它工作得很好。
我也尝试完全删除分辨率参数而没有运气。
当我加入......
时print thumbOriginal
....语句,它返回正确完整的文件路径。
答案 0 :(得分:0)
img 不是一个字符串,它是一个Image对象(请查看Wand源代码来理解)。当你尝试打印一个Image对象时,python不知道该怎么做。当你说:
print thumbObject
您已将此表面(表面上)定义为文件名的路径,该文件名是字符串。 print方法知道如何打印字符串。
我想如果你尝试下面的代码,你会有更好的运气。请注意我指定了分辨率:
with Image(filename=thumbOriginal, resolution=300) as img:
img_width = img.width
print "img_width: "+str(img_width)
img_height = img.height
print "img_height: "+str(img_height)
if img_width > img_height:
ratio = float(dest_width / img_width)
else: ratio = float(dest_height / img_height)
img.resize(int(ratio*img_width), int(ratio *img.height))
img.alpha_channel = False
img.format = 'jpg'
img.save(filename = thumb)