Python Wand.image PDF到JPG内存转换器

Python Wand.image PDF到JPG内存转换器,python,wand,Python,Wand,我正在尝试编写一些代码,将驻留在web上的PDF转换为一系列JPG 我得到的工作代码是: 1下载pdf 2将其保存到磁盘 3将其转换为JPG,并保存到磁盘 有没有一种方法可以在下面的代码中尝试编写相同的代码,这会引发一个错误,即从internet获取PDF,但将其保留在内存中,以防止程序写入磁盘/从磁盘读取,然后将其转换为JPG,并上传到AWS s3 我想这会有用的: f = urlopen("https://s3.us-east-2.amazonaws.com/converted1jpgs/e

我正在尝试编写一些代码,将驻留在web上的PDF转换为一系列JPG

我得到的工作代码是:

1下载pdf

2将其保存到磁盘

3将其转换为JPG,并保存到磁盘

有没有一种方法可以在下面的代码中尝试编写相同的代码,这会引发一个错误,即从internet获取PDF,但将其保留在内存中,以防止程序写入磁盘/从磁盘读取,然后将其转换为JPG,并上传到AWS s3

我想这会有用的:

f = urlopen("https://s3.us-east-2.amazonaws.com/converted1jpgs/example.pdf") #file to process
但我得到了以下错误:

异常TypeError:类型为“NoneType”的TypeErrorobject在>中没有len,已忽略

完整的代码,以及适当的PDF文件,我想转换。注意:如果我将f=替换为保存在磁盘上的PDF的位置,则代码可以工作:

from urllib2 import urlopen
from wand.image import Image

#location on disk
save_location = "/home/bob/Desktop/pdfs to convert/example1"

#file prefix
test_id = 'example'
print 1
f = urlopen("https://s3.us-east-2.amazonaws.com/converted1jpgs/example.pdf")
print 2
print type(f)

with Image(filename=f) as img:
    print('pages = ', len(img.sequence))
    with img.convert('jpg') as converted:
        converted.save(filename=save_location+"/"+test_id+".jpg")
urlopen的结果显然不是文件名,因此您不能传入filename=f并期望它工作

我没有安装魔杖,但从现在起,显然有很多其他的方法来构建它

首先,urlopen是一个类似文件的对象。当然,类文件对象是一个模糊的术语,并非所有类文件对象都适用于所有期望类文件对象的API,例如,API可能期望能够在POSIX级别调用fileno并从中读取…,但这至少值得尝试注意file而不是filename:

如果不起作用,您可以随时将数据读入内存:

buf = f.read()
with Image(blob=buf) as img:

如果您有巨大的文件,这就不太理想了,但至少您不必将其存储在磁盘上。

谢谢您的建议。我按照这里的代码,它通过jpg链接传递,然后从那里开始工作。因此,不确定为什么传递PDF不起作用:file=f而filename=f起了作用。德普。谢谢
buf = f.read()
with Image(blob=buf) as img: