![]() |
Постепенная сборка изображения
Вложений: 1
Есть битмапа огромного размера, над ней нужно провести ряд преобразований с помощью фильтров и сохранить в картинку на локальном диске. Собрал тестовый вариант и прибалдел от загрузки ЦП.
Понимаю, что надо дробить картинку на битмапы меньшего размера, с которыми и работать. Не понимаю как собрать куски bitmapdatа-ы в один большой? Код AS3:
|
Цитата:
|
А чем copyPixels принципиально отличается от метода draw?
|
1) тем, что draw врисует любой объект IDrawable, а copyPixels может только из BitmapData копировать
2) copyPixels может выбрать любой участок изображения без лишних заморочек, не требуя никаких матриц |
3) так же copyPixels работает очень быстро.
|
Ну draw тоже достаточно шустрый метод
|
Кстати, не уверен, что применение разных фильтров на маленькие кусочки дадут ожидаемый результат в конечной сборке в единое изображение, наверно появятся швы.
И почему-то есть подозрение, что разбивка не даст прирост в производительности.. Но надо конечно тестировать. |
1. зачем предварительно разбивать на куски большой битмап, если все равно над всеми кусками придется выполнять различные действия? Как это может положительно сказаться на производительности?
2. после применения фильтров к кускам, действительно, велика вероятность, что появятся швы 3. в данном случае draw будет быстрее, чем copyPixel - ведь во втором случае метод будет заключен в довольно медленный (и огромный!) цикл 4. а почему загрузка проца критична? И если все-таки критична, может, в сторону шейдеров посмотреть? 5. если дело в том, что приложение во время выполнения работы подвисает, может распределить применение фильтров по-времени? |
meiciuc, в твоем комментарии ответ на пункт 1 раскрывается в пункте 5.
Про огромный цикл я не понял — есть же аргумент sourceRect. Что касается неоднократно упомянутых швов, то их можно полностью избежать, если применять всякие blur/displace к тайлу с полями. С одной стороны это безусловно увеличит время обработки, с другой — это решение. |
Цитата:
Цитата:
|
| Часовой пояс GMT +4, время: 09:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.