PIL vs Python-GD для обрезки и изменения размера

Я создаю пользовательские изображения, которые позже конвертирую в пирамиду изображений для Seadragon AJAX. Изображения и изображения пирамиды создаются с использованием PIL. В настоящее время требуется несколько часов, чтобы сгенерировать изображения и пирамиду изображений приблизительно для 100 изображений, которые имеют общую ширину и высоту около 32 000 000 на 1000 (да, изображение очень длинное и узкое). Производительность примерно аналогична другому алгоритму, который я пробовал (т.е. deepzoom.py ). Я планирую посмотреть, будет ли python-gd работать лучше из-за того, что большая часть его функциональности закодирована в C (из библиотеки GD). Я бы предположил значительное повышение производительности, однако мне любопытно услышать мнение других. В частности, изменение размера и кадрирование происходит медленно в PIL (w / Image.ANTIALIAS). Значительно ли это улучшится, если я буду использовать Python-GD?

Заранее спасибо за комментарии и предложения.

РЕДАКТИРОВАТЬ: разница в производительности между PIL и Python-GD кажется минимальным. Я проведу рефакторинг своего кода, чтобы уменьшить узкие места в производительности и включу поддержку нескольких процессоров. Я протестировал модуль многопроцессорной обработки Python. Результаты обнадеживают.

13.10.2009 00:13:21
Seadragon выглядит очень круто. Можно ли разделить задачу на несколько процессов или несколько компьютеров?
John La Rooy 13.10.2009 01:47:13
Это можно разделить. Я надеялся избежать этого, потому что это требует некоторого существенного перефакторинга моего кода, но, похоже, это неизбежно.
Vince 13.10.2009 22:06:48
2 ОТВЕТА
РЕШЕНИЕ

PIL в основном в C.

Сглаживание происходит медленно. Когда вы выключаете сглаживание, что происходит со скоростью?

1
13.10.2009 01:22:18
На самом деле попробовал это после того, как я написал. Это намного быстрее, используя BILINEAR и дает сопоставимые результаты эстетически. Кроме того, производительность метода изменения размера сопоставима между PIL и python-GD (разница в скорости 10%).
Vince 13.10.2009 22:05:17

VIPS включает в себя быстрый создатель DeepZoom . Я рассчитал deepzoom.pyи на своей машине вижу:

$ time ./wtc.py 
real    0m29.601s
user    0m29.158s
sys     0m0.408s
peak RES 450mb

где wtc.jpg- изображение RGB JPG с разрешением 10 000 x 10 000 пикселей и wtc.pyиспользует эти параметры .

VIPS примерно в три раза быстрее и требует четверти памяти:

$ time vips dzsave wtc.jpg wtc --overlap 2 --tile-size 128 --suffix .png[compression=0]
real    0m10.819s
user    0m37.084s
sys     0m15.314s
peak RES 100mb

Я не уверен, почему sys намного выше.

0
18.02.2015 13:57:01