Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Гладкое масштабирование Bitmap (http://www.flasher.ru/forum/showthread.php?t=164724)

Light 18.08.2011 13:06

Гладкое масштабирование Bitmap
 
Добрый день! Столкнулся с проблемой - при масштабировании Bitmap изображение обзаводится острыми выступающими пикселами. Как можно с этим бороться? К слову для масштабирования сначала использовал простое изменение width и height. Потом попробовал методом draw срисовывать с оригинального изображения с матрицей со свойством scale и с включенным smooth. Видимой разницы не нашел, одно и то же - пиксельные края. Может кто из вас знает, как гладко масштабировать? Может использовать какие-то фильтры? Ели да, то буду рад примеру кода, так как не особо понимаю пока как с фильтрами работать.

goodguy 18.08.2011 13:07

перед тем как масштабировать картинку, включить у нее свойство smoothing
Код AS3:

yourBitmap.smoothing = true;

Зачем тут матрица вообще

Light 18.08.2011 13:14

goodguy, Спасибо, помогло! А матрица ради масштабирования. Просто попробовал двумя разными способами

cleptoman 18.08.2011 18:36

делал для себя не так давно библиотечку одну..билинейное сглаживание (бикубическое там тож есть, но чот не работает)..работает на шейдерах..на входе метода битмапдата и нужный скейл, на выходе новая битмапдата, уже сжатая и сглаженная
http://cleptoman.ru/bitmap_utils.swc

fish_r 18.08.2011 22:06

http://www.flasher.ru/forum/showpost...5&postcount=12

dimarik 18.08.2011 22:29

Цитата:

Сообщение от cleptoman (Сообщение 1022958)
делал для себя не так давно библиотечку одну..билинейное сглаживание.. работает на шейдерах..на входе метода битмапдата и нужный скейл, на выходе новая битмапдата, уже сжатая и сглаженная

Крутотень. А что по тестам?

cleptoman 18.08.2011 23:11

вот не тестил..по задаче они не особо актуальны были.

goodguy 19.08.2011 14:27

Попробовал библиотеку, работает отлично, и довольно шустро.
Результаты:

Код AS3:

trace("original width: " + canvas.width + ", original height: " + canvas.height); // original width: 3710, original height: 1638
var time:int = getTimer();
var finalBMD:        BitmapData        = BitmapDataUtil.bilinearResample(canvas, settings.scaling);
trace(getTimer() - time + " time, w:" + finalBMD.width + " h: " + finalBMD.height); // 91 time w:2133 h: 941


cleptoman 19.08.2011 15:42

чот все-равно много..имеет смысл наверно докрутить методами с ассинхронным выполнением

i.o. 19.08.2011 15:49

кто не в курсе - "smoothing = true" делает ту же самую билинейную интерполяцию :)


Часовой пояс GMT +4, время: 01:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.