Проблема производительности GraphicsMagick с использованием собственного кода С++ java

Я использую GraphicsMagick C++ API и вызываю его в веб-проекте Java, который развернут на tomcat, для динамического изменения размера изображений во время выполнения с определенного размера до заданной ширины/высоты. Я использую метод scale() API С++.

Теперь производительность нормальная, когда нагрузка на tomcat невелика, но когда количество подключений/нагрузка на сервер увеличивается, производительность изменения размера изображения сильно снижается. Даже на каждое изменение размера уходит от 30 до 40 секунд. Хотя использование памяти, процессора и ввода-вывода в системе кажется нормальным и совсем не плохим.

Может ли кто-нибудь помочь мне с этой проблемой? я был бы очень признателен


person Intellex    schedule 19.07.2012    source источник


Ответы (2)


Вы видели это в документации по Graphics Magick?

gm convert -size 120x120 cockatoo.jpg -resize 120x120 +profile "*" thumbnail.jpg

В этом примере «-size 120x120» дает подсказку декодеру JPEG, что изображение будет уменьшено до 120x120, что позволит ему работать быстрее, избегая возврата изображений с полным разрешением в GraphicsMagick для последующей операции изменения размера. Параметр «-resize 120x120» указывает желаемые размеры выходного изображения. Он будет масштабирован таким образом, что его наибольший размер составит 120 пикселей. '+profile "*"' удаляет любые ICM, EXIF, IPTC или другие профили, которые могут присутствовать во входных данных и не нужны в миниатюре.

Если вы в настоящее время не используете параметр размера, вы можете заметить большую разницу.

person Aaron    schedule 18.12.2012

Я столкнулся с этим, когда у нас была похожая проблема. Но теперь у нас есть хорошее решение. Попробуйте gm4java + im4java: http://kennethxu.blogspot.com/2013/04/integrate-java-and-graphicsmagick.html

person Kenneth Xu    schedule 17.04.2013