Масштабирование больших изображений с использованием Java и AsyncScalr
Я использую AsyncScalr в сервлете для уменьшения некоторых больших изображений (~ 10-15 мегабайт), фактический процесс изменения размера занимает около 40 мс, что не так много. Избыток происходит от чтения изображения из локального хранилища в виде BufferedImage. так что времена в основном такие:
прочитайте файл изображения: 1630мс! изменение размера изображения: 41мс написание изображения: 40мс
Ниже приведен код, который я использую, есть ли более оптимальный способ сделать это?
final FileImageInputStream fileImageInputStream = new FileImageInputStream(file);
BufferedImage bufferedImage = ImageIO.read(fileImageInputStream);
// resize file
Future<BufferedImage> result = AsyncScalr.resize(bufferedImage, Method.SPEED, width, OP_ANTIALIAS, OP_BRIGHTER);
try {
bufferedImage = result.get();
}
catch (InterruptedException e) {
e.printStackTrace();
}
catch (ExecutionException e) {
e.printStackTrace();
}
// Write the image
ImageIO.write(bufferedImage, imageOutput, outputStream);
1 ответ
Решение
Чтобы ответить на мой вопрос, использование java.awt.Toolkit для загрузки изображений решило проблему.