Лучше всего использовать что-то вроде imagemagick для преобразования изображения и создания эскиза.Есть проект под названием JMagick , который предоставляет JNI-хуки в Imagemagick, но также выполняет процессную работу.
Imagemagick - сильно оптимизированный C-код для работы с изображениями.Он также сможет обрабатывать изображения, которые не поддерживаются Java, и с гораздо меньшим использованием памяти.
Я работаю на веб-сайте, где мы позволяем пользователям загружать изображения и создавать эскизы на лету, и это абсолютно необходимобыстро, вот что мы используем.
Ниже приведен код Groovy, но он может быть легко изменен на код Java:
public boolean createThumbnail(InputStream input, OutputStream output){
def cmd = "convert -colorspace RGB -auto-orient -thumbnail 125x125 -[0] jpg:-"
Process p = cmd.execute()
p.consumeProcessErrorStream(System.out)
p.consumeProcessOutputStream(output)
p.out << input
p.out.close()
p.waitForOrKill(8000)
return p.exitValue()==0
}
Это создает миниатюру с использованием каналов без фактической записи данных.на диск.OutputStream может быть в файле, если вы хотите сразу же записать его.