保存图像文件Python的快速方法

时间:2018-04-01 19:35:55

标签: python image image-processing pillow

我有一个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()

1 个答案:

答案 0 :(得分:2)

  

如何加速以下代码?

  1. 使用最新的枕头版
  2. 改为使用Pillow-SIMD(替换至少SSE4的CPU)
  3. 使用较便宜的过滤器调整大小:Image.BICUBIC甚至Image.BILINEAR
  4. 执行一次调整大小和一次裁剪(调整大小之前),而不是同时使用resizeimageimg.resize
  5. 将图像保存为快速格式。不同的格式以不同的速度运行。 PNG是最慢的,而JPEG和TIFF是最快的。