![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2003
Сообщений: 74
|
Можно ли на флэше (AS3) стандартными методами решить следующую задачу? Флэш-клиент через сокет-соединение получает в виде набора байтов картинку в формате jpg/png. Могу ли я, приняв массив байтов, создать из него собственно картинку?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Да, можно.
|
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
погляди flash.display.Loader там есть метод loadBytes(byteArray:ByteArray)
далее создаем flash.display.Bitmap(loader.content) и радуемся сам не пробовал, но из хелпа это следует.... |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
о, я напутал, не из массива, а в массив..
ну тогда BitmapData.setPixels(rect:Rectangle, inputByteArray:ByteArray):void но тогда нужно знать размер картинки, как я понимаю. в общем BitmapData, Bitmap и Loader если грузить постом..... если нет, то через ByteArray сначала создать BitmapData а далее ее превращать в Bitmap |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
Типа так:
package {
import flash.display.*;
import flash.net.*;
import flash.events.*;
import flash.utils.*;
public class Test extends Sprite {
public function Test(){
// Получаем файл jpg-картинки в виде байтов
var loader:URLLoader;
loader = new URLLoader( new URLRequest("image.jpg") );
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(IOErrorEvent.IO_ERROR, loadError);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loadError);
loader.addEventListener(Event.COMPLETE, loadComplete);
}
protected function loadComplete(event:Event):void {
var loader:URLLoader = event.currentTarget as URLLoader;
trace("Скачано "+Math.round(uint(loader.bytesLoaded)/1024)+"кб.");
// содержимое в байтах
var b:ByteArray = loader.data;
// превращаем в картинку
var img:Loader = new Loader();
img.loadBytes(b);
// добавляем картику на сцену
addChild(img);
}
protected function loadError(event:ErrorEvent):void {
trace("loadError. "+event);
}
}
}
|
|
|||||
|
Регистрация: Oct 2003
Сообщений: 74
|
Большое спасибо за пример кода!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|