在移动应用程序中,我需要发送用户使用相机拍摄或从相机中选取的图像。 我正在使用starling框架和feathersUI(虽然我觉得这对问题无关紧要) 使用loadFilePromise加载mediapromise时,我使用以下代码处理图像数据:
_mediaLoader = new Loader()
//loading the filePromise from CameraRoll
_mediaLoader.loadFilePromise(_mediaPromise);
_mediaLoader.contentLoaderInfo.addEventListener(starling.events.Event.COMPLETE, onLoadImageComplete);
private function onLoadImageComplete(event:flash.events.Event=null):void {
//creating the starling texture to display the image inside the application
var texture:Texture = Texture.fromBitmapData(Bitmap(_mediaLoader.content).bitmapData, false, false, 1);
//now trying to load the content into a bytearray to send to the server later
var bytes:ByteArray=_mediaLoader.contentLoaderInfo.bytes;
}
最后一行代码会导致安全错误: 错误#2044:未处理的SecurityErrorEvent:。 text =错误#2121:安全沙箱违规:app:/myapp.swf:http://adobe.com/apollo/[[DYNAMIC]]/1无法访问。这可以通过调用Security.allowDomain来解决。
我试过
Security.allowDomain("*")
作为测试 但后来我得到: SecurityError:错误#3207:应用程序沙箱内容无法访问此功能。
作为一种解决方法,我使用Adobes PNGEncoder类从加载器BitmapData在Application中编写我自己的png ByteArray:
var ba:ByteArray=PNGEncoder.encode(Bitmap(_mediaLoader.content).bitmapData)
但这需要相当长的时间......
我还尝试使用FileReference加载图像,但
_mediaPromise.file
和
_mediaPromise.relativePath
都是空的。
我做错了什么?或者这是一个已知问题?
谢谢!