Python:处理图像并保存到文件流

10
我需要使用Python处理图像(应用滤镜和其他转换),然后通过HTTP向用户提供服务。目前,我正在使用BaseHTTPServer和PIL。
问题是,PIL不能直接写入文件流,因此我必须先将其写入临时文件,然后读取此文件以便将其发送给服务的用户。
是否有适用于Python的图像处理库可以直接将JPEG输出到I/O(类似文件的)流中?是否有方法可以让PIL这样做?
1个回答

19

使用内存中的二进制文件对象io.BytesIO

from io import BytesIO

imagefile = BytesIO()
animage.save(imagefile, format='PNG')
imagedata = imagefile.getvalue()

这在Python 2和Python 3上都可用,因此应该是首选。

仅在Python 2上,您还可以使用内存文件对象模块StringIO,或更快的C编码等效物cStringIO

from cStringIO import StringIO

imagefile = StringIO()  # writable object

# save to open filehandle, so specifying the expected format is required
animage.save(imagefile, format='PNG')
imagedata = imagefile.getvalue()

StringIO / cStringIO 是同一原理的旧版、遗留实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接