Лучшая библиотека масштабирования изображений
Я искал и нашел несколько библиотек масштабирования изображений для Java. Но не уверен, с кем идти. Мне нужно создать эскизы изображения, загруженного сервером.
Было бы здорово, если бы вы могли сказать, какой из них хорош и плох.
Список, который у меня есть:
- JMagick
- im4java
- Thumbnailator
- java-image-scaling
- JAI
Ответы
Ответ 1
В моих личных проектах я не использую какую-либо конкретную библиотеку, функциональность, предоставляемая Java, дает мне достойные результаты. Если вы просто хотите сделать масштабирование изображений, тогда полная библиотека обработки изображений будет слишком тяжелой.
Я использую фрагменты кода, приведенные в http://www.mkyong.com/java/how-to-resize-an-image-in-java/, который работает достаточно хорошо.
Ответ 2
Java API для создания эскизов недостаточно хорош, если вам нужны миниатюры высокого качества.
Для создания высококачественных миниатюр используйте фреймворк, подобный тем, которые вы указали. Я пробовал ImgScalr (https://github.com/thebuzzmedia/imgscalr) и Thumbnailator.
С моими проверками микрообъектов (на самом деле нельзя использовать для выводов общего назначения) Thumbnailator быстрее - хотя и не намного, и проще - особенно при создании эскизов с прозрачностью.
Я также тестирую JMagick, но сталкиваюсь с проблемами, просто компилируя код и настраивая его. Также немного беспокоился о том, чтобы столкнуться с проблемами позже с каркасом, основной код которого написан на языке, который я вообще не понимаю - C.
Вам также может быть полезно обсудить здесь: Как изменить размер изображения с помощью Java?
Ответ 3
Для моих простых потребностей Thumbnailator был идеален. Маленькая библиотека; плавный, чистый, хорошо документированный API.
В моем случае это была просто зависимость "net.coobird" % "thumbnailator" % "0.4.8"
и:
//..
Thumbnails.of(originalFile)
.size(300, 300)
.toFile(thumbnailFile)
//..
и сделано. В основном это дружественная оболочка поверх Java 2D API. Полезно для конкретных (thumbnailin ') потребностей; нет кривой обучения.
Если вам действительно не нужно делать тяжелую съемку с изображениями, я бы с осторожностью относился к внешнему двоичному (ImageMagick и обертки, например JMagick), что добавило бы сложности и движущихся частей в настройку. Особенно, если ваш стек - это что-то вроде моего: Scala/Java-приложение, работающее на Heroku. Theres, вроде heroku-buildpack-imagemagick-cedar-14
, да, но простая зависимость, связанная с приложением, бесконечно чиста.