2

我正在尝试使用魔杖将 PDF 转换为 JPG。

我想根据全局变量 docHeight 调整 jpg 的大小。

jpg 的大小将由最大尺寸与将放置的目标页面的比率确定。

我似乎从起跑门开始就失败了,我不知道为什么。

我的 with 语句中似乎没有读取该文件。

我的 with Image 语句返回

>>>>with Image(filename = thumbOriginal, resolution = (RESOLUTION,RESOLUTION)) as img:
    print img
'NoneType' object has no attribute '__getitem__'

我阅读文件的方式有什么问题?

它主要是从这个问题中借来的。我几乎找不到有关如何正确进行此转换的任何信息。

    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)

我还尝试了在另一个 stackoverflow 问题上找到的更简单的版本:

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

.... 语句,它返回正确且完整的文件路径。

4

1 回答 1

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)
于 2016-04-13T19:55:40.947 回答