Вот отзывы о тесте, который я запустил:
Резюме: похоже, ImageIO является наиболее оптимизированным классом для обработки изображений.
Процесс: BufferedImage => byte [] => Byte [] => int [] => write
примечание: использование ImageIO для преобразования изображения в байтах []
изображение 1900 * 1600
получить байт [] из BufferedImage: 45 мс
Байт приведения [] en Байт []: 0 мс
запись в память: 4–9 мс
изображение 1280 * 1024
получить байт [] из BufferedImage: 20–23 мс
Байт приведения [] en Байт []: 0 мс
запись в память: 4–7 мс
изображение 800 * 600
получить байт [] из BufferedImage: 9 мс
Байт приведения [] en Байт []: 0 мс
написать в мемуаре: 3 - 5 мс
==> Линейная обработка, лучшее, что мы можем получить
Процесс: BufferedImage => int [] => write
примечание: используйте getRGB для преобразования изображения в int []
изображение 1900 * 1600: 2500 мс
==> getRGB получает каждый пиксель изображения: 3 миллиона, которые вам нужно написать: слишком долго
Процесс: BufferedImage => Растр => DataBuffer => запись
получить DataBuffer из BufferedImage: 0 мс
написать в мемуаре: 2500 мс
изображение 1900 * 1600: 2500 мс
==> DataBuffer имеет размер 3 миллиона, время записи слишком велико