в мобильном приложении мне нужно отправить изображение, которое пользователь либо взял с камерой, либо выбрал из камероллы. Я использую рамку скворца и feathersUI (хотя я думаю, что это не имеет значения, проблемы) Когда MediaPromise загружаются с помощью loadFilePromise я использую следующий код, чтобы иметь дело с данными изображения:Ошибка безопасности при попытке загрузить ByteArray из 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: нарушение безопасности песочницы: приложение: /myapp.swf: http://adobe.com/apollo/[[DYNAMIC]]/1 не может получить доступ. Это можно обойти, вызвав Security.allowDomain.
Я попытался
Security.allowDomain("*")
как тест , но затем я получаю: SecurityError: Error # 3207: Application-песочница содержание не может получить доступ к этой функции.
В качестве обходного пути я пишу свой собственный PNG ByteArray внутри приложения от погрузчиков BitmapData с использованием Adobes PNGEncoder Класс:
var ba:ByteArray=PNGEncoder.encode(Bitmap(_mediaLoader.content).bitmapData)
Но это занимает значительное количество времени ...
Я также попытался FileReference загрузить изображение, но
_mediaPromise.file
и
_mediaPromise.relativePath
оба являются нулевыми.
Что я делаю неправильно? Или это известная проблема?
Спасибо!
Поскольку я еще не отвечал на это, могу сказать, что я решил эту проблему в своем последнем проекте, используя com.freshplanet.ane.AirImagePicker, где возвращаемые данные имеют тип BitmapData. Поэтому, если вы застряли с кодом и нет выхода, взгляните на этот ANE, это сработало для меня. Вы в настоящее время запрашиваете собственное приложение для камеры вручную или какой маршрут вы сейчас собираетесь? –
Получение BitmapData без проблем с использованием Bitmap (_mediaLoader.content) .bitmapData Получение необработанного ByteArray является проблемой ... – zantafio
Вы пытались получить ByteArray из BitmapData с помощью getPixels? (см. [this SO Thread] (http://stackoverflow.com/questions/27444583/get-a-bytearray-from-bitmapdata-in-as3)) –