Skip to main content
Participant
October 4, 2013
Question

copy image from camera roll on IOS

  • October 4, 2013
  • 0 replies
  • 370 views

Hi all!

I have a problem that I can't seem to solv. The user copys an image from the camera roll to the applicationStorageDirectory:

function browseTexturesClicked()

{

          textureFile = new CameraRoll()

          textureFile.browseForImage();

          textureFile.addEventListener(MediaEvent.SELECT, onTextureSelected);

}

function onTextureSelected(evt:MediaEvent):void

{

          loadPreset = false

          var promise:MediaPromise = evt.data as MediaPromise;

          textureFile.removeEventListener(MediaEvent.SELECT, onTextureSelected);

          mobileTextureLoader = new Loader();

          mobileTextureLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, textureLoaded);

          mobileTextureLoader.loadFilePromise(promise);

}

function textureLoaded(evt:Event):void

{

          var bitmapData:BitmapData = Bitmap(evt.currentTarget.content).bitmapData

          var bitmap:Bitmap = new Bitmap(bitmapData);

          var bitmapToSave:ByteArray = bitmap.bitmapData.getPixels(bitmap.bitmapData.rect);

          var bitmapFileName:String = "temptextures/" + "texture" + (currSelectedTexture+1).toString() + ".jpg"

          var bitmapFile:File = File.applicationStorageDirectory.resolvePath(bitmapFileName);

          var bitmapFileStream:FileStream = new FileStream();

          bitmapFileStream.open(bitmapFile, FileMode.WRITE);

          bitmapFileStream.writeBytes(bitmapToSave, 0, bitmapToSave.length);

          bitmapFileStream.close()

}

But when I try to load the image I get a 2124 error:

presetTexturePath = File.applicationStorageDirectory.resolvePath("presets");

var picLoader:Loader = new Loader();

picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadPicture);

picLoader.load(new URLRequest(presetTexturePath.url));

function loadPicture(evt:Event):void

{

     var bitmap:Bitmap = Bitmap(evt.target.content);

     addChild(bitmap)

}

I'm guessing it has something to do with the saving part.

I would be so greatfull if anyone could give me some pointers!

Have a gret day!

------------------------

I have done some changes and now it works. I tought it might help someone.

var dataSource:IDataInput;

function onTextureSelected(evt:MediaEvent):void

{

          var imagePromise:MediaPromise = evt.data;

          dataSource = imagePromise.open();

 

          var eventSource:IEventDispatcher = dataSource as IEventDispatcher;           

          eventSource.addEventListener( Event.COMPLETE, textureLoaded ); 

}

function textureLoaded(evt:Event):void

{

            var imageBytes:ByteArray = new ByteArray();

    dataSource.readBytes( imageBytes );

 

          var bitmapFileName:String = "temptextures/" + "texture" + (currSelectedTexture+1).toString() + ".jpg"

          var bitmapFile:File = File.applicationStorageDirectory.resolvePath(bitmapFileName);

          var bitmapFileStream:FileStream = new FileStream();

 

          bitmapFileStream.open(bitmapFile, FileMode.WRITE);

          bitmapFileStream.writeBytes(imageBytes);

          bitmapFileStream.close()

 

 

          var picLoader:Loader = new Loader();

          picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadPicture);

          picLoader.load(new URLRequest(bitmapFile.url));

          function loadPicture(evt:Event):void

          {

                    var bitmapData:BitmapData = Bitmap(evt.currentTarget.content).bitmapData

         var bitmap:Bitmap = Bitmap(evt.target.content);

         addChild(bitmap)

          }

}

Message was edited by: ealanger-dsaevarferdgxgfx

This topic has been closed for replies.