5

我正在寻找一种计算和内存效率高的方法来在 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 可以为我的场景做的最好的事情。

谢谢!

4

0 回答 0