Показать сообщение отдельно
Старый 16.08.2013, 11:00
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 3  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Нет, в битмапдате у меня изображение прекрасно грузится.
Там проблем именно с загрузкой вообще нет. Все на одном сервере.

Вот фрагмент кода. Мне нужна функция getImageAsByteArray().
Но, естественно, не через PNGEncoder.encode() или JPGEncoder.encode().

Код AS3:
public function load(imageFileURL:String):void 
{
	loader = new Loader();			
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
	loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
	loader.load(new URLRequest(imageFileURL), new LoaderContext(true));
}
 
private function imageLoaded(e:Event):void 
{	
	loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, imageLoaded);
	loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
 
	// вот тут все в порядке
	imageBitmap = Bitmap(loader.content);
 
	// вот эта функция работает неправильно, возвращаемый 
	// ByteArray не является картинкой
	imageByteArray = getImageAsByteArray(loader.content);
 
	dispatchEvent(new Event(BITMAP_READY));	
}
 
 
private function getImageAsByteArray(image:DisplayObject) : ByteArray
{
	return image.loaderInfo.bytes;
}
Добавлено через 21 минуту
Собственно, судя по всему, там в массиве bytes лежит что-то еще:

Код AS3:
var bytesTotal1:int = loader.contentLoaderInfo.bytesTotal;
var bytesTotal2:int = loader.contentLoaderInfo.bytes.length;
var bytesTotal3:int = loader.content.loaderInfo.bytes.length;
 
trace(bytesTotal1,bytesTotal2,bytesTotal3);
 
// 43187 43253 43253
Поэтому картинка и не получается обратно из bytes...

Добавлено через 40 минут
Короче, решение оказалось таким:

1. Грузим не через Loader, а через URLLoader как URLLoaderDataFormat.BINARY - получаем картинку в ByteArray
2. Грузим этот массив данных в Loader через loader.loadBytes() - получаем изображение в дисплейлист


Последний раз редактировалось mikhailk; 16.08.2013 в 11:55.