如何将全分辨率图像保存回相机胶卷(Android)

时间:2011-09-06 03:36:26

标签: android actionscript-3

  • 设备 - Nexus One
  • 操作系统 - Android 2.3.4
  • 类 - CameraRoll
  • 方法 - addBitmapData()
  • 错误 - [ErrorEvent type =“error”bubbles = false cancelable = false eventPhase = 2 text =“错误#2038:文件I / O错误。” ErrorID中= 2038]

我正在尝试开发照片应用,但是在将完整尺寸版本的图像保存回CameraRoll时遇到了问题。这非常令人沮丧,因为我只看到将舞台保存到CameraRoll的示例(我可以开始工作)。

保存回CameraRoll是否有限制?当我尝试加载图像(2592 x 1944)并使用addBitmapData()直接将其保存回CameraRoll时,我收到以下错误。

[ErrorEvent type =“error”bubbles = false cancelable = false eventPhase = 2 text =“错误#2038:文件I / O错误。” ErrorID中= 2038]

这是一个代码示例。

// class vars for CameraRoll and Loader
private var _cameraRoll:CameraRoll = new CameraRoll();
private var _loader:Loader = new Loader();

// launch _cameraRoll
private function launchCameraRoll(e:MouseEvent):void {
     _cameraRoll.addEventListener(MediaEvent.SELECT, loadImg);
     _cameraRoll.browseForImage();
}

// open selected image using _loader
private function loadImg(e:MediaEvent):void {
     if (e.data.isAsync) {
          _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, saveImage);
          _loader.loadFilePromise(e.data);
     } else {
          _loader.loadFilePromise(e.data);
          saveImage();
     }
}

// once loaded, save image immediately back to _cameraRoll
private function saveImage(e:Event = null):void {
     _cameraRoll.addEventListener(ErrorEvent.ERROR, onError);
     _cameraRoll.addEventListener(Event.COMPLETE, onComplete);

     var bmd:BitmapData = new BitmapData(_loader.width, _loader.height);    
     bmd.draw(_loader);

     _cameraRoll.addBitmapData(bmd);
}

// trace error
private function onError(e:ErrorEvent):void {
     trace(e);  // [ErrorEvent type="error" bubbles=false cancelable=false eventPhase=2 text="Error #2038: File I/O Error." errorID=2038]
}

// show complete status
private function onComplete(e:Event):void {
     trace("complete");
}

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题(即使是真正的小图片) 我通过在<android><manifestAdditions>文件的[Application]-app.xml部分取消注释这一行来解决它:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

答案 1 :(得分:0)

您是否尝试将图像保存在较低分辨率?例如1024×768?也许您的设备支持的大小有限制,我发现this或者磁盘空间可能是提到的问题here

最好的问候