【问题标题】:Python, how can I asynchronously save the PIL images?Python,如何异步保存 PIL 图像?
【发布时间】:2021-12-10 14:51:34
【问题描述】:

对于异步文件保存,我可以使用aiofiles库。

要使用 aiofiles 库,我必须这样做:

async with aiofiles.open(path, "wb") as file:
   await file.write(data)

如何异步保存 PIL 图像?即使我使用Image.tobytes函数将其保存为file.write(data),保存的图像也不正确。

那么如何异步保存 PIL 图像?

【问题讨论】:

  • 我对 asyncio 一无所知,但您可以将图像编码为 JPEG 或 PNG 到内存缓冲区并将该缓冲区(在链接示例中称为 JPEG)传递给 @987654328 @你在你的问题中提到。见stackoverflow.com/a/70275120/2836621
  • @MarkSetchell 非常感谢你,它有效 :)
  • 酷 - 很高兴它有效。如果你做了一些计时并发现对性能有一些好处,请写一个答案让其他人从中受益......并接受你自己的答案并抓住积分。

标签: python python-imaging-library


【解决方案1】:

感谢@MarkSetchell 发表的评论,我设法找到了解决方案。

async def save_image(path: str, image: memoryview) -> None:
    async with aiofiles.open(path, "wb") as file:
        await file.write(image)


image = Image.open(...)
buffer = BytesIO()
image.save(buffer, format="JPEG")

await save_image('./some/path', buffer.getbuffer())

我不知道可以提高多少速度,但就我而言,我能够同时运行一些数据处理代码、数据下载代码和图像保存代码,这让我加快了速度。

【讨论】:

    猜你喜欢
    • 2016-04-11
    • 2011-09-21
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2014-12-27
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多