JPEG - это сжатие изображений с потерями, который отбрасывает информацию, которую человеческий глаз не может хорошо заметить. Однако, в зависимости от настроек качества изображения при сжатии изображения, артефакты сжатия, такие как блочность и размытость может стать видимым - это причина того, что изображение не выглядит четким.
Возможно, что _ 1_ сохраняет JPEG с настройкой более низкого качества, чем это необходимо, чтобы изображение выглядело достаточно хорошо.
Чтобы установить более высокое качество, необходимо использовать _ 2_, чтобы указать настройки качества изображения, затем используйте _ 3_ для вывода JPEG.
Например:
// Get a writer for JPEG.
ImageWriter iw = ImageIO.getImageWritersByFormatName("jpeg").next();
iw.setOutput(new FileImageOutputStream(outputFile));
// Set the compression quality to 0.9f.
ImageWriteParam iwParam = iw.getDefaultWriteParam();
iwParam.setCompressionQuality(0.9f);
// Write image
iw.write(null, new IIOImage(imageToWrite, null, null), iwParam);
Интересующие методы:
Тем не менее, как упоминается в других ответах, JPEG не подходит для сжатия текста и иллюстраций. Если цель - сохранить качество изображения, но размер файла может быть больше, чем при сжатии с помощью JPEG, используйте формат сжатия изображения без потерь, такой как PNG, сохранит качество изображения как оно есть, без потерь. Однако во многих случаях размер файла PNG будет больше, чем размер файла JPEG. (Но это не всегда так.)
Общее практическое правило заключается в том, что для фотографий и других реалистичных изображений форматы сжатия с потерями, такие как JPEG, будут хорошо работать для компромисса между размером файла и качеством, в то время как форматы сжатия без потерь, такие как PNG, будут лучше работать для иллюстраций и штриховых рисунков, где есть большие области одинакового цвета с небольшими эффектами градиента.
person
coobird
schedule
08.06.2009