Image orientation on iOS
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
