как увеличить изображение (любого типа) с c # без потери качества - PullRequest
2 голосов
/ 06 января 2010

вопрос говорит сам за себя ..

приложение будет на asp.net и c # (4.0)

Ответы [ 3 ]

8 голосов
/ 06 января 2010

Это невозможно. Только подумайте об очень простом случае растрового изображения 10 x 10 с 8-битным цветом. Следовательно, существует 10 * 10 * 8 = 800 бит информации. Теперь попробуйте увеличить это до растрового изображения 100 x 100 с 8-битным цветом. Это требует 80000 бит информации. Откуда эта дополнительная информация? Существуют всевозможные схемы интерполяции для попытки угадать, какой должна быть информация, но это лучшее, что мы можем сделать. Должна быть потеря качества, поскольку мы не знаем, какой должна быть информация.

Вот несколько схем интерполяции:

  1. Ближайший сосед
  2. Bilinear
  3. Бикубическая
  4. hq2x

Эти методы имеют разные качества. Некоторые приводят к неровности (ближайший сосед), другие приводят к смягчению изображения (билинейный), а другие приводят к звонящим артефактам (бикубическим).

6 голосов
/ 06 января 2010

Если вы увеличите изображение сверх исходного размера, вы потеряете качество. Обойти это невозможно.

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

1 голос
/ 06 января 2010

Это не невозможно! Проверьте плагин Genuine Fractals . Он использует "алгоритмы интерполяции на основе фракталов", чтобы увеличить изображение без потери качества.

Это плагин для Photoshop, но он показывает, что высококачественное расширение действительно возможно. (Интересно, можно ли вызвать его через приложение .Net? Хммм ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...