Вам необходимо кодировать данные изображения в формате, который имеет правильные характеристики для вашего изображения.Если это 24-битный цвет и много цветов, и вы не хотите терять качество, вы, вероятно, застряли в PNG, но посмотрите на JPEG без потерь 2000.
Если вы можете потерять качество, попробуйте
- Lossy JPEG 2000 - намного меньше, чем JPEG для той же потери качества
- , уменьшая количество цветов и используя формат с отображением цветов
Еслиизображение содержит только серые или черно-белые данные, убедитесь, что вы кодируете их как таковые (8-битный серый или 1-битный черный и белый).Затем убедитесь, что вы используете кодировщик, настроенный для такого формата (например, TIFF с группой 4 или JBIG2).
Еще один хороший вариант - удалить все нежелательные метаданные из изображения (или убедитесь, что ваш кодировщик не вводит ничего).
Если вы хотите придерживаться того, что есть в Java, вам, вероятно, придется использовать TIFF, PNG или JPEG - существуют сторонние кодировщики изображений (дляНапример, моя компания, Atalasoft , делает .NET-версию этих усовершенствованных кодеров - там также есть поставщики Java)
К вашему сведению: уменьшение битовой глубины обычно означает снижение качества (если толькосокращение бессмысленно).Например, если у меня 24-битное цветное изображение, но все цвета серые (где R == G == B), то уменьшение до 8-битного серого не приведет к потере качества.Это также верно, если ваше изображение имеет коллекцию из 256 различных цветов, и вы переключаетесь в формат с цветовым отображением (индексированный или палитровый).Вы уменьшаете количество байтов и не снижаете качество.