我有一个包含 10 000 张图像的文件夹,我在 for 循环中一张一张地迭代,每次处理后我都将修改后的图像保存在一个文件中。执行的问题是即使处理 500 张图像也需要很长时间,我看到 Windows 任务管理器中的 CPU 使用率上升到 80%。
如何加速下面的代码?将所有处理过的图像保存在内存中并一次性写入?
from PIL import Image
from resizeimage import resizeimage
for imgnm in range(0, samples):
start = time.time()
filename=filenames[imgnm]
img = Image.open(os.path.join(imagedir,filename))
img=resizeimage.resize_crop(img, [700, 700])
(img.resize((700,700),Image.ANTIALIAS)).save(os.path.join(subdir,filename),quality=40)
img.close()
最佳答案
How to speed up below code?
- 使用最新的 Pillow 版本
- 改用 Pillow-SIMD(直接替换至少具有 SSE4 的 CPU)
- 使用成本较低的过滤器来调整大小:
Image.BICUBIC
甚至Image.BILINEAR
- 执行一次调整大小和一次裁剪(在调整大小之前),而不是同时使用
resizeimage
和img.resize
。 - 将图像保存为快速格式。不同的格式以不同的速度运行。 PNG 是最慢的,而 JPEG 和 TIFF 是最快的。
关于python - 保存图像文件Python的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49601934/