【发布时间】:2014-04-02 21:59:23
【问题描述】:
在 pgmagick 中,你像这样初始化一个图像:
Image('my_image.png')
我将对远程存储在 S3 上的文件进行操作,并且不希望将它们临时存储在磁盘上。有没有办法从 URL 打开图像文件?当我尝试简单地将文件名替换为 URL 时,出现错误:Unable to open file.
我希望能够使用 URL。如果有人对此有任何建议或如何扩展 pgmagick 来实现它,我会很高兴。
【问题讨论】:
在 pgmagick 中,你像这样初始化一个图像:
Image('my_image.png')
我将对远程存储在 S3 上的文件进行操作,并且不希望将它们临时存储在磁盘上。有没有办法从 URL 打开图像文件?当我尝试简单地将文件名替换为 URL 时,出现错误:Unable to open file.
我希望能够使用 URL。如果有人对此有任何建议或如何扩展 pgmagick 来实现它,我会很高兴。
【问题讨论】:
(在我看来)最简单的方法是使用很棒的 requests 库。您可以一次从服务器获取每张图片,然后使用Image() 打开它:
from StringIO import StringIO
import requests
from pgmagick import Image, Blob
r = requests.get('https://server.com/path/to/image1.png', auth=('user', 'pass'))
img = Image(Blob(StringIO(r.content)))
仅此而已。身份验证当然不是必需的,但根据您的 S3 设置可能是必需的。玩得开心!
【讨论】:
Pillow 可以做到这一点 - 也许它会更好地满足您的需求?
open() 命令的结果上调用 Blob() 方法/类。我刚刚更新了我上面的例子,你为什么不看看它现在是否有效?