ImageMagick和Pillow(PIL)哪个内存占用更小?

3 投票
1 回答
1609 浏览
提问于 2025-04-18 09:23

我们在Heroku上托管的Django应用程序会对用户上传到Amazon S3的图片进行一些简单的处理,主要是调整图片大小,以便在网站上显示。为此,我们使用了Pillow(一个Python图像库的分支),并在Celery任务中运行。

我们发现这个操作的时间变化很大,从几分之一秒到半分钟甚至更长。我猜测原因可能是我们现在经常遇到内存配额(R14)的问题(因为应用程序变得更大了),这让我觉得调整图片大小的速度可能会特别慢。

所以我在考虑重新设计这些任务,改用外部的ImageMagick程序来处理图片,而不是在内存中使用PIL。这样做的想法是,至少可以保证在调整大小时使用的内存会在convert进程结束时释放。

所以我想问,这样做会有帮助吗?ImageMagick的convert会比Pillow占用更少的内存吗?

1 个回答

2

我也有过类似的经历(可惜是在Java中),这可能对你做决定有帮助。

我尝试在Java中调用ImageMagick库(使用JNI),一开始觉得这个主意不错,但结果却导致了大量的内存泄漏。

最后我们选择了通过外部命令行来调用ImageMagick,这样效果好多了,正如你提到的那样——可以确保内存被释放。

撰写回答