PDA

Просмотр полной версии : открыть картинку с диска и отобразить


FinalBoss
11.05.2010, 14:05
Здравсвуйте. Необходимо открыть произвольный растровый файл с диска через стандартное диалоговое окно открытия файлов и вывести его на экран ...
Решил попробовать сделать с помощью AIR, открытие через стандартное окно сработало без проблем, а вот с отображением выбранной картинки на экран не получается, нужно как-то этот filestream в bitmap превратить ...

public function onBMPLoad(e:Event):void {
var file:File = File.desktopDirectory;
file.browseForOpen("Open");
file.addEventListener(Event.SELECT, onSelectFile);
}

public function onSelectFile(e:Event):void {
var file:File = e.target as File;
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
-----------------------
addChild(fileStream);
}

nOobCrafter
11.05.2010, 14:22
имхо аир обсуждается в другой ветке.
В обычном флеше это делалось путем загрузки фотки из байтмассива Loader.loadBytes(ByteArray); гляньте что вы получаете на выходе, может тоже подойдет. А вообще лучше сразу погуглить, готов поспорить есть куча готовых велосипедов.

FinalBoss
11.05.2010, 19:36
нашел решение без использования эир, ниже то что касается конкретно моей задачи, а по ссылке можно посмотреть более развитый пример с исходником: http://www.adobe.com/devnet/flash/quickstart/filereference_class_as3/#access надеюсь кому-нить поможет ....

public var file:FileReference;

public function onBMPLoad(e:Event):void {
file = new FileReference();
file.addEventListener(Event.SELECT, onSelectFile);
var fileFilter:FileFilter = new FileFilter("Images: (*.jpeg, *.jpg, *.gif, *.png)", "*.jpeg; *.jpg; *.gif; *.png");
file.browse([fileFilter]);
}

public function onSelectFile(e:Event):void {
file.removeEventListener(Event.SELECT, onSelectFile);
file.addEventListener(Event.COMPLETE, onCompleteFile);
file.load();
}

private function onCompleteFile(event:Event):void {
file.removeEventListener(Event.COMPLETE, onCompleteFile);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadBytesHandler);
loader.loadBytes(file.data);
}

private function loadBytesHandler(event:Event):void {
var loaderInfo:LoaderInfo = (event.target as LoaderInfo);
loaderInfo.removeEventListener(Event.COMPLETE, loadBytesHandler);
addChild(loaderInfo.content);
}