python - 如何在不使用磁盘存储的情况下在 python 中加载图像?

标签 python image image-processing flask

我正在编写一个接收两个图像 URL 作为参数的 Flask 应用程序。传统上,我会在服务器本地磁盘上下载这些图像并执行我的图像处理操作。我正在使用以下代码下载它们。

urllib.request.urlretrieve(image1url, image_id + '.jpg')

在此之后,我使用 :

读取图像
original_image = Image.open(image_id + '.jpg')

并执行我的图像处理操作,例如裁剪和应用一些滤镜。

original_crop = original_image.crop((x, y, x + width / 3, y + height / 3))

此外,我对这张图片使用了 ImageFilter 操作。现在这段代码将部署在服务器上。如果我继续这种方式,我将继续下载图像并将其保存在服务器的磁盘上。当然,我知道在完成图像处理操作后删除图像是一种选择。但是如果我每秒接到几百个调用,我可能会在某个时间点用完很多空间。该应用程序是多线程的,使用调用

app.run(threaded=true)

这就像一个魅力。

我想知道是否有一种方法可以在不使用服务器磁盘存储的情况下加载图像。从而减少了我的服务对硬盘空间的需求。

最佳答案

如果您不想将图像存储在临时文件中,您可以将 URL 内容包装在 stream 中并将其传递给 Image.open

import io
import urllib.request

from PIL import Image

# your avatar URL as example
url = ('https://www.gravatar.com/avatar/3341748e9b07c9854d50799e0e247fa3'
       '?s=328&d=identicon&response=PG&f=1')
content = urllib.request.urlopen(url).read()
original_image = Image.open(io.BytesIO(content))

关于python - 如何在不使用磁盘存储的情况下在 python 中加载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44193511/

相关文章:

python - 从 Pandas 中删除列中的重复信息

python - 从字符串列表中的拆分字符串创建字典

python - 将列表中的每个元素与所有其他元素进行比较

php - 亚马逊 S3 : How to use SEO-friendly URLs for Images

javascript - CSS 响应式背景图像作为全尺寸图像

iphone - Objective-C - 将 GPS 信息添加到照片

python - 目录大小和扩展

algorithm - 如何将相似面孔的照片组合在一起

c# - 使用关键点匹配技术在图像位置查找图像

image-processing - opencv/javacv 中的面积计算?