zen0n, если вам абсолютно необходимо это сделать, использование предложения Эндрю с незначительной модификацией - единственный способ сделать это (выполнить всю операцию изменения размера, выводя байты в ByteArrayOutputStream, чтобы вы могли посчитать их заранее).
Модификация, которую я бы использовал, - это выполнение на стороне сервера с простой библиотекой изменения размера изображения, такой как imgscalr , передача BufferedImage, представляющего загруженное изображение, и получение измененного размера BufferedImage, представляющегоизображение нового размера.Затем прокачайте его через ImageIO.write и выведите его в BufferedArrayOutputStream.
Затем установите заголовок «Content-Length» и отправьте обратно содержимое изображения.
Поскольку преобразование необработанных байтов изображения в JPGвводит последовательность сжатия и кодирования событий, нет точного способа заранее предсказать точную длину файла, а затем использовать ImageIO.write для потоковой передачи байтов обратно клиенту.Сначала вам придется полностью изменить размер изображения (в памяти), используя технику, упомянутую выше, а затем записать данные обратно клиенту.