Вы можете попробовать libvips. Это потоковая библиотека обработки изображений, поэтому она может считывать входные данные, обрабатывать и записывать выходные данные в виде единого конвейера без отдельной фазы загрузки и временных файлов. У этого есть причудливая резьбовая система ввода-вывода, так performance is good and memory use is low.
Я засек на этой машине (IMAC с ImageMagick 6.9.6-3 Q16, гм 1.3.25, ВИПС 8.4.2):
$ vips black test.tif 13000 10000 --bands 3
$ ls -l test.tif
-rw-r--r-- 1 john staff 390000854 22 Nov 09:43 test.tif
Так что это 13000 х 10000 3-полосный, 8 бит несжатого TIFF. С vipsthumbnail, образ Shrinker, который поставляется с VIPs, я вижу:
$ /usr/bin/time -l vipsthumbnail test.tif -s 128x128 -o small.png
0.54 real 0.42 user 0.11 sys
77635584 maximum resident set size
Я побежал в три раза и выбрал самый быстрый, так что должно быть просто испытанием vipsthumbnail
и не мой диск системы. Это 0.54s в реальном времени, 77MB пиковой памяти.
С convert
я вижу:
$ /usr/bin/time -l convert test.tif -resize 128x128 small.png
4.87 real 4.28 user 0.55 sys
1432182784 maximum resident set size
Опять же, самый быстрый из трех трасс, 4.87s режиме реального времени, 1.4GB памяти. GraphicsMagick немного быстрее, я вижу:
$ /usr/bin/time -l gm convert test.tif -resize 128x128 small.png
3.95 real 3.41 user 0.51 sys
1264369664 maximum resident set size
3,95s real, 1.2gb пиковая память.
В этом тесте libvips в 7 раз быстрее и использует на 15 раз меньше памяти, чем графический.
libvips - стандартная часть большинства linux, в доморощенных и macports, а на веб-сайте vips есть 64-битные двоичные файлы.
Из того, что я понимаю График Magick быстрее, как это только 8 бит. Вы можете попробовать установить 8-битную версию Imagemagick, которая может открыть больше возможностей? – Bonzo
@Bonzo GraphicsMagick обычно тоже 16-бит, но, как и ImageMagick, он доступен в Q8, Q16 и других версиях. –
Отличный ответ @ user894763 разобрался с вашей проблемой? Если да, пожалуйста, подумайте о том, чтобы принять его как ваш ответ - нажав полый зеленый галочку/галочку рядом с подсчетом голосов. Благодарю. http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –