Увеличение изображения (масштаб, zoom и т.п.)
Необходимо написать функцию, которая увеличивает растровое изображение, естественно не используя всяких там StretchDraw и т.п.
Я понимаю, что при увеличении появятся пустые пиксели, их значения я буду искать с помощью интерполяции. С этим проблем нет. Проблема в том, как расположить пиксели на новом изображении, т.е. если исходное изображение имеет размер 4х2 пикселя, увеличиваем его в 1,5 раза, новое изображение будет иметь размеры 6х3 пикселя. Так вот, как именно расположить пиксели старого изображения на новом и как узнать какие необходимо интерполировать?
Надеюсь вопрос понятен. Спасибо за внимание.
Цитата:
Originally posted by Aptem
Здравствуйте.
...
Надеюсь вопрос понятен. Спасибо за внимание.
Здравствуйте.
...
Надеюсь вопрос понятен. Спасибо за внимание.
А это уже зависит от метода, который ты будешь использовать. Самый простой и быстрый (но с плохим качеством) - подмена пиксела ближайшим соседом:
newPixels[newX] = oldPixels[newX / newWidth * oldWidth];
(здесь все координаты и размеры - целые числа). Ну а если используешь более продвинутую интерполяцию, то ничто не мешает узнать цвет пиксела в позиции [2.5f, 1.18f] :)
Все разобрался! Большое спасибо.
Цитата:
Originally posted by Aptem
Может быть, эта ссылка чем-нибудь поможет?
Интересно, а если необходимо уменьшить изображение? Как тогда?
Цитата:
Originally posted by Aptem
Интересно, а если необходимо уменьшить изображение? Как тогда?
Интересно, а если необходимо уменьшить изображение? Как тогда?
А никак. Можно только увеличивать...