Масштабирование больших изображений с использованием 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 для загрузки изображений решило проблему.

Другие вопросы по тегам