Это не проблема Java.Независимо от языка или платформы вам нужно сделать определенные вещи, чтобы правильно отобразить изображение в Интернете.Итак, вместо того, чтобы рекомендовать какую-либо библиотеку Java (я уверен, что вы получите много библиотек с открытым исходным кодом на каждом языке), я собираюсь перечислить основные шаги, которые необходимо выполнить:
- Вынеобходимо изменить размер (не обрезать) изображение для нескольких устройств.Не приличный сайт скачивает 6МБ изображения.Никогда!Даже 2MB изображения.Изображение моего профиля в Facebook, которое я сделал на своей 8-мегапиксельной мобильной камере, после загрузки имеет размер 160 КБ.Попробуйте уменьшить размер изображения примерно до 100 - 150 КБ.Это обычные размеры изображений.

Вы создали бы измененное изображение для мобильного телефона, планшета и ноутбука.Для мобильных устройств это обычно 640 x 480. Для планшетов это обычно 800 x 600. Для ноутбуков это обычно 1024 x 768
Затем сожмите изображение, как вы это сделали.Убедитесь, что конечное изображение является прогрессивным JPEG / JPG.Прогрессивный JPEG сжат в слоях.Браузеры, поддерживающие прогрессивные изображения, отображают туманный предварительный просмотр при загрузке изображения.Это улучшает пользовательский опыт.Для браузеров, которые не поддерживают прогрессивное изображение, используются некоторые обходные пути.Например, вы можете создать низкокачественную версию вашего изображения (размером около 1 КБ) с помощью opacity: 1; filter: blur(20px);
.Таким образом, размытая версия изображения будет отображаться при загрузке изображения более высокого качества.Первоначально вы устанавливаете непрозрачность изображения более высокого качества на 0. Как только загрузка изображения более высокого качества будет завершена, вы устанавливаете непрозрачность изображения более низкого качества на 0, а изображения более высокого качества - на 1. Вы можете проверить, является ли ваше изображениепрогрессивный или нет здесь и может создавать сжатое прогрессивное изображение здесь .Возможно, вы сделаете все это программно, но эти ресурсы могут служить справочными.
Убедитесь, что ваш сервер поддерживает HTTP / 2, который полностью мультиплексирован.Вы можете увидеть мультиплексирование здесь.Таким образом, ресурсы могут загружаться параллельно.

Убедитесь, что ваш сервер поддерживает gzip или сжатие.Таким образом, ресурсы передаются по сети в формате GZIP и автоматически извлекаются браузером.Это обеспечивает быструю загрузку.
Используйте правильные cache-control
заголовки, чтобы браузер кэшировал изображения, избавляя от необходимости загружать изображение при каждом посещении.
Если возможно, следует использовать мобильную конструкцию, чтобы производительность стала лучше.