Изменить размер изображения без потери качества

Я работаю над веб-приложением, которое:

  1. Загружает изображение в формате JPEG
  2. извлекает из него зону (используя координаты)
  3. и изменяет размеры извлеченной зоны, не теряя качества изображения.

Я использовал этот код для этого:

//method to extract an image 
def extractedImage=exractImageRect( imageFile ,  x , y , h , w)

ImageIO.write(extractedImage, "PNG", new File("C:\\Users\\Ma\\Documents\\out.png"));
int type = extractedImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : extractedImage.getType();

//resize the image 
resizedImage =resizeImage(extractedImage,  type ,w*2 , h*2)

Но с использованием этого кода изображение с измененным размером имеет очень низкое качество. Я также использовал RenderingHints: та же проблема.

Итак, мой вопрос: как лучше сохранить качество изображения, используя высоту и ширину исходного изображения, которое имеет 300 точек на дюйм и 2479 ширины, 3508 высот?

2 ответа

и изменяет размеры извлеченной зоны, не теряя качества изображения.

Я думаю, что эта часть невозможна. Давайте предположим, что у вас есть картинка, представляющая собой прямоугольник Blakc размером 10 на 10 пикселей. Теперь вы удвоите размеры, и будет прямоугольник размером 20 на 20 пикселей. Изначально у вас было 100 черных пикселей, но теперь у вас есть 400 пикселей, из которых 100 черных и 300 неизвестны. Вы должны выяснить с помощью некоторого алгоритма, что цвета ваших пикселей.

В этом случае это проще, потому что он черный, но если бы вместо прямоугольника у вас была картинка, было бы невозможно точно определить, какие цветные пиксели принадлежат неизвестным пикселям, поэтому вы должны приближаться, но в большинстве случаев приближение не является идеальным., так что будет потеря качества

Я протестировал различные алгоритмы изменения размера изображения (см. Здесь), один из которых обеспечивает наилучшее качество изображения - AVERAGE, но он очень медленный. PROGRESSIVE_BILINEAR - это хороший компромисс между временем обработки и качеством изображения.

Другие вопросы по тегам