【问题标题】:Opening an Image From a URL with pgmagick使用 pgmagick 从 URL 打开图像
【发布时间】:2014-04-02 21:59:23
【问题描述】:

在 pgmagick 中,你像这样初始化一个图像:

Image('my_image.png')

我将对远程存储在 S3 上的文件进行操作,并且不希望将它们临时存储在磁盘上。有没有办法从 URL 打开图像文件?当我尝试简单地将文件名替换为 URL 时,出现错误:Unable to open file.

我希望能够使用 URL。如果有人对此有任何建议或如何扩展 pgmagick 来实现它,我会很高兴。

【问题讨论】:

    标签: python pgmagick


    【解决方案1】:

    (在我看来)最简单的方法是使用很棒的 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 设置可能是必需的。玩得开心!

    【讨论】:

    • 啊,但不幸的是这不起作用。 pgmagick 的 Image 正在寻找一个文件名,然后用它来打开文件。在上面的示例中,Image 类将非常不成功地扫描 UNIX 文件系统以查找与传入的 blob 内容匹配的文件。
    • @user1427661 - 那么没有办法直接打开原始数据吗? Pillow 可以做到这一点 - 也许它会更好地满足您的需求?
    • @user1427661 - 查看我找到的文档 this example,它在 Python open() 命令的结果上调用 Blob() 方法/类。我刚刚更新了我上面的例子,你为什么不看看它现在是否有效?
    • 啊哈!那成功了。现在唯一的问题是如何将文件写回 S3。 pgmagick 显然不会让访问已编辑图像的 blob 内容变得超级容易。
    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2019-12-23
    相关资源
    最近更新 更多