Skip to main content
Inspiring
July 15, 2013
Question

Image orientation on iOS

  • July 15, 2013
  • 0 replies
  • 394 views

Hi Everyone,

Reading the EXIF is not working in iOS. I managed to fixed using same classes(jp.shichiseki.exif.*) in Android.

Here is my source code,

import jp.shichiseki.exif.*;

import flash.net.URLRequest;

import flash.text.TextFormat;

var cameraRoll:CameraRoll = new CameraRoll();

var imagePromise:MediaPromise;

var dataSource:IDataInput;

var loader:ExifLoader = new ExifLoader();

loader.addEventListener(Event.COMPLETE, onComplete);

if(CameraRoll.supportsBrowseForImage)

{

          cameraRoll.addEventListener(MediaEvent.SELECT, imageSelected);

          cameraRoll.addEventListener(Event.CANCEL, browseCanceled);

          //cameraRoll.addEventListener( ErrorEvent.ERROR, mediaError );

          cameraRoll.browseForImage();

}

else

{

}

function browseCanceled(e:Event):void

{

          trace("Cancelled")

}

function imageSelected(e:MediaEvent):void

{

          trace(" --- Image Selected  --- \n");

          imagePromise = e.data;

 

          trace(imagePromise.isAsync + " \n");

          dataSource = imagePromise.open();

          if(imagePromise.isAsync)

          {

                    var eventSource:IEventDispatcher = dataSource as IEventDispatcher;           

                    eventSource.addEventListener( Event.COMPLETE, onMediaLoaded );

          }else{

                    imagePromise.open();

                    // get data

 

                    loader.load(new URLRequest(imagePromise.file.url));

                    // load with Loader

          }

}

function onComplete(e:Event):void {

  if (loader.exif.ifds.primary)

    displayIFD(loader.exif.ifds.primary);

  if (loader.exif.ifds.exif)

    displayIFD(loader.exif.ifds.exif);

  if (loader.exif.ifds.gps)

    displayIFD(loader.exif.ifds.gps);

  if (loader.exif.ifds.interoperability)

    displayIFD(loader.exif.ifds.interoperability);

  if (loader.exif.ifds.thumbnail)

    displayIFD(loader.exif.ifds.thumbnail);

 

          //addChildAt(loader.content, 0)

}

function displayIFD(ifd:IFD):void {

  trace(" --- " + ifd.level + " ---\n" );

  for (var entry:String in ifd) {

    trace(entry + ": " + ifd[entry] + " \n");

  }

}

function onMediaLoaded( event:Event ):void

{

          event.currentTarget.removeEventListener( Event.COMPLETE, onMediaLoaded );

          var imageBytes:ByteArray = new ByteArray();

          dataSource.readBytes( imageBytes );

 

     //imageBytes.position = 0;

     //var string:String = imageBytes.readUTFBytes(300);

          trace("imgbytes---> \n"+imageBytes + "\n");

          var exif:ExifInfo = new ExifInfo(imageBytes);

 

          trace("\nifds : " + exif.ifds + "\n");

 

}

Did i miss anything?

Thanks

Regards

Balasubramaniyan.S

This topic has been closed for replies.