我正在寻找一种计算和内存效率高的方法来在 Python 程序中使用 ImageMagick 来检索成批照片的尺寸。
我首先使用了当前最喜欢的 ImageMagick-Python 包 Wand。我试了一下,感觉很慢。所以我对它进行了测试,而不是使用 subprocess.check_output() 简单地执行 ImageMagick。子进程快了 10 倍以上。
我的问题:这是其他人的经验吗?有没有更快使用 Wand 的方法?
魔杖耗时1.2 秒:
1.jpg: 3264x2448
2.jpg: 1600x1200
3.jpg: 1700x1101
4.jpg: 1600x1200
5.jpg: 3648x2736
6.jpg: 2789x1980
7.jpg: 2400x1600
8.jpg: 3648x2736
processed 8 files in 1.236s
子进程只用了0.1 秒来检索相同的文件:
1.jpg: 3264x2448
2.jpg: 1600x1200
3.jpg: 1700x1101
4.jpg: 1600x1200
5.jpg: 3648x2736
6.jpg: 2789x1980
7.jpg: 2400x1600
8.jpg: 3648x2736
processed 8 files in 0.102s
魔杖代码:
for filename in files:
with wand.image.Image(filename=filename) as img: return img.width, img.height
子进程代码:
subprocess.check_output(['identify', '-format', '%f:%w:%h\\n', 'path/to/imgs/*.jpg'])
# parse output by splitting each line on the ':'
我意识到这不是苹果对苹果,因为我在 Wand 中的每个文件调用一次 ImageMagick。但是,我在 Wand 中没有看到任何批处理选项,所以我相信这是 Wand 可以为我的场景做的最好的事情。
谢谢!