当我将图像放到画布上时,我可以将nativePath获取到图像,但不是我需要的bitmapdata。
在调试模式下,当我查看文件属性时,数据被设置为NULL。
我在这里做错了什么?在我的代码file.data
中没有给我任何东西。
protected function creationCompleteHandler(event:FlexEvent):void
{
this.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER,onDragIn);
this.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP,onDrop);
NativeDragActions.COPY;
}
private function onDrop(e:NativeDragEvent):void
{
trace("Dropped!");
var dropfiles:Array = e.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
for each (var file:File in dropfiles){
switch (file.extension.toLowerCase()){
case "png" :
trace('png');
//resizeImage(file.nativePath);
break;
case "jpg" :
trace('jpg');
//resizeImage(file.nativePath);
break;
case "jpeg" :
trace('jpeg');
//resizeImage(file.nativePath);
break;
case "gif" :
resizeImage(file.nativePath);
break;
default:
Alert.show("choose an image file!");
}
}
}
答案 0 :(得分:0)
首先,你必须加载bytearray:
var ba:ByteArray = new ByteArray();
var stream:FileStream = new FileStream();
stream.open(file, FileMode.READ);
stream.readBytes(ba);
stream.close();
接下来,使用以下命令加载位图:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoaded);
loader.loadBytes(ba);
最后,获取位图
private function fileLoaded(event:Event):void {
var bitmap:Bitmap = Bitmap(event.target.content);
// finally you have: bitmap.bitmapData
// cleanup
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, fileLoaded);
}