2015-03-01 4 views
1

Я пытался сделать действительно ту же функциональность изменения размеров изображений, что и в MS Word.Изменение размера изображения без потери информации

Я хочу изменить размер BufferedImage, но я теряю информацию во время изменения размера.

Я попытался реализовать два подхода, но оба они дали одинаковый результат.

Перед любым изменением размеров:

enter image description here

Изображение после того, как несколько изменить размер действий в моем приложении:

enter image description here

Первый подход:

image = Thumbnails.of(image).size(w,h).asBufferedImage(); 

Второй подход:

image = toBufferedImage(image.getScaledInstance(w, h, Image.SCALE_SMOOTH)); 

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

Любая идея, что я делаю неправильно?

+0

http://stackoverflow.com/a/4250279/1404734 –

ответ

0

Вы постоянно теряете информацию от своего изображения после каждой попытки изменения размера. Если вы хотите решения (например, в MS Word), вам нужно сохранить исходное изображение, но показывать только измененную копию.

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

Надеюсь, я немного помог вам.

+0

Кроме того, прочитайте эту статью [1], чтобы улучшить способы изменения размера любого изображения. [1] - https://www.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html –

+0

Да, 'Image.getScaledInstance()' является асинхронным и, кроме того, , является более медленным, чем существующие альтернативы. –

+1

Это было нелегко, но оно работает. После запоминания оригинала необходимо запомнить аспектный размер последнего размера изображения. Я сделал это с помощью этого простого алгоритма: http://www.coderanch.com/t/467505/java/java/Resize-image-maintaing-aspect-ratio –

Смежные вопросы