我发现在PIL中我可以从磁盘加载图像的速度比我复制它的速度快得多。复制图像比调用image.copy()有更快的方法吗? (这怎么可能呢?)
示例代码:
import os, PIL.Image, timeit
test_filepath = os.path.expanduser("~/Test images/C.jpg")
load_image_cmd = "PIL.Image.open('{}')".format(test_filepath)
print((PIL.Image.open(test_filepath)).__class__)
print(min(timeit.repeat(load_image_cmd, setup='import PIL.Image', number=10000)))
print(min(timeit.repeat("img.copy()", setup='import PIL.Image; img = {}'.format(load_image_cmd), number=10000)))
产地:
PIL.JpegImagePlugin.JpegImageFile
0.916192054749
1.85366988182
将gc.enable
添加到timeit
的设置中并没有太大改变。
答案 0 :(得分:3)
根据PIL文档,open()
是一个懒惰的操作,这意味着它还没有真正完成使用图像的所有工作。
要做copy()
但是,它几乎肯定必须阅读整个内容并进行处理。
编辑:
要测试这是否属实,您应该在每个图像中访问一个像素作为时间的一部分。
编辑2:
另一眼文档显示load()
之后的open()
应该完成所有工作。