Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Из ByteArray в BitmapData (http://www.flasher.ru/forum/showthread.php?t=113181)

TheBird 20.06.2008 20:46

Из ByteArray в BitmapData
 
Есть некий растр, который после долгих но не мучительных преобразований мы хотим сохранить на память, а для пущей крутости мы зажимаем его в jpeg с помощью класса от неутомимого Tinic Uro (http://www.kaourantin.net/2005/10/mo...ts-in-as3.html)
Все замечательно работает, все отлично, но для полного кайфа хочется лицезреть всю красоту jpeg артефактов до отправки на сервер (как это сделано в PS).

Но как флешу рассказать что ByteArray, который получился на выходе из конвертера, является jpeg'ом? Теоретически если его подложить в экземпляр класса Loader, может сработать. Но не тут то было, потому как поле content - всего лишь контейнер, в который просто что-то кладется по окончании загрузки.
Вообщем я в замешательстве.
У кого-нибудь есть варианты?

Есть героический и очень теоритический способ - дописать в конвертер функцию которая обращает массив обратно в родной вид BitmapData.
Или может быть существует более продвинутый класс который уже делает и то и другое.

Rzer 20.06.2008 20:54

Код:

var b:Bitmap = loader.content as Bitmap;

TheBird 20.06.2008 21:30

при добавлении полученной битмапы:
Код:

Error #2007: Parameter child must be non-null.

TheBird 20.06.2008 22:04

да... и сам код...

Код:

                private function getjpeg(level : Number = 80) : ByteArray {
                        var bd : BitmapData;
                        var bmap : Bitmap;
                        bd = new BitmapData(canvaWidth, canvaHeight, true);
                        bmap = new Bitmap(bd);
                        bmap.bitmapData.draw(canva);
                        var jpegEnc : JPEGEncoder = new JPEGEncoder(level);
                        var jpegDat : ByteArray = jpegEnc.encode(bmap.bitmapData);
                        return jpegDat;
                }
                public function previz(level : Number = 80) : void {
                        var b : Bitmap = getjpeg(level) as Bitmap;
                        addChild(b);
                        trace(level);
                }


etc 20.06.2008 22:19

А зачем вам бинарник jpeg, если у вас уже есть BitmapData?

wvxvw 20.06.2008 22:38

А чем Loader.loadBytes() не устроил?
Да, и я бы все-тки PNGEncoder"ом пользовался, если качество важно, потом если сильно захочется можно тем же ПХП легко конвертнуть, а разница в объеме не такая существенная, если не нужно их сотнями посылать, никто не умрет от лишних 20-30Кб.

TheBird 20.06.2008 23:00

у меня опционально - можно и так и так.

__etc так артефакты же =)

etc 20.06.2008 23:15

Цитата:

Сообщение от TheBird (Сообщение 746825)
у меня опционально - можно и так и так.

__etc так артефакты же =)

Артефакты юзеру хотите показать? Тогда loadBytes в руки.


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

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