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

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

Similar Messages

  • Camera image orientation on iOS

    Hi,
    Taking a picture using CamerUI on iOS (and on Android) may bring the image oriented in the wrong angle.
    Reading the Exif on Android is fine and allows reorientation to the correct position, however this is not working on iOS.
    Since I assume taking a picture using the camera is a core feature for many applications, I’d appreciate if someone who managed to solve it can post a solution here?
    Thanks!

    I think this is it:
    // ExifReader.as
    // Reads and obtains JPG EXIF data.
    // Project site: http://devstage.blogspot.com/2011/02/extract-jpg-exif-metadata-in.html
    // SAMPLE USAGE:
    // var reader:ExifReader = new ExifReader();
    // reader.addEventListener(Event.COMPLETE, function (e:Event):void{
    //     trace(reader.getKeys());
    //     trace(reader.getValue("DateTime"));
    //     trace(reader.getThumbnailBitmapData().width +'x' + reader.getThumbnailBitmapData().height);
    // reader.load(new URLRequest('myimage.jpg'), true);
    package
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Loader;
        import flash.display.LoaderInfo;
        import flash.events.Event;
        import flash.events.EventDispatcher;
        import flash.events.ProgressEvent;
        import flash.net.URLRequest;
        import flash.net.URLStream;
        import flash.utils.ByteArray;
        public class ExifReader extends EventDispatcher
            private var m_loadThumbnail:Boolean = false;
            private var m_urlStream:URLStream = null;
            private var m_data:ByteArray = new ByteArray();
            private var m_exif:Object = new Object;
            private var m_exifKeys:Array = new Array();
            private var m_intel:Boolean=true;
            private var m_loc:uint=0; 
            private var m_thumbnailData:ByteArray = null;
            private var m_thumbnailBitmapData:BitmapData=null;
            private var DATASIZES:Object = new Object;
            private var TAGS:Object = new Object;
            public function load(urlReq:URLRequest, loadThumbnail:Boolean = false):void{
                m_loadThumbnail = loadThumbnail;  
                m_urlStream = new URLStream();
                m_urlStream.addEventListener( ProgressEvent.PROGRESS, dataHandler);
                m_urlStream.load(urlReq);
            public function getKeys():Array{
                return m_exifKeys;
            public function hasKey(key:String):Boolean{
                return m_exif[key] != undefined;
            public function getValue(key:String):Object{
                if(m_exif[key] == undefined) return null;
                return m_exif[key];
            public function getThumbnailBitmapData():BitmapData{
                return m_thumbnailBitmapData;
            public function ExifReader(){
                DATASIZES[1] = 1;
                DATASIZES[2] = 1;
                DATASIZES[3] = 2;
                DATASIZES[4] = 4;
                DATASIZES[5] = 8;
                DATASIZES[6] = 1;  
                DATASIZES[7] = 1;
                DATASIZES[8] = 2;
                DATASIZES[9] = 4;
                DATASIZES[10] = 8;
                DATASIZES[11] = 4;
                DATASIZES[12] = 8;
                TAGS[0x010e] = 'ImageDescription';
                TAGS[0x010f] = 'Make';
                TAGS[0X0110] = 'Model';
                TAGS[0x0112] = 'Orientation';
                TAGS[0x011a] = 'XResolution';
                TAGS[0x011b] = 'YResolution';
                TAGS[0x0128] = 'ResolutionUnit';
                TAGS[0x0131] = 'Software';
                TAGS[0x0132] = 'DateTime';
                TAGS[0x013e] = 'WhitePoint';
                TAGS[0x013f] = 'PrimaryChromaticities';
                TAGS[0x0221] = 'YCbCrCoefficients';
                TAGS[0x0213] = 'YCbCrPositioning';
                TAGS[0x0214] = 'ReferenceBlackWhite';
                TAGS[0x8298] = 'Copyright';
                TAGS[0x829a] = 'ExposureTime';
                TAGS[0x829d] = 'FNumber';
                TAGS[0x8822] = 'ExposureProgram';
                TAGS[0x8827] = 'IsoSpeedRatings';
                TAGS[0x9000] = 'ExifVersion';
                TAGS[0x9003] = 'DateTimeOriginal';
                TAGS[0x9004] = 'DateTimeDigitized';
                TAGS[0x9101] = 'ComponentsConfiguration';
                TAGS[0x9102] = 'CompressedBitsPerPixel';
                TAGS[0x9201] = 'ShutterSpeedValue';
                TAGS[0x9202] = 'ApertureValue';
                TAGS[0x9203] = 'BrightnessValue';
                TAGS[0x9204] = 'ExposureBiasValue';
                TAGS[0x9205] = 'MaxApertureValue';
                TAGS[0x9206] = 'SubjectDistance';
                TAGS[0x9207] = 'MeteringMode';
                TAGS[0x9208] = 'LightSource';
                TAGS[0x9209] = 'Flash';
                TAGS[0x920a] = 'FocalLength';
                TAGS[0x927c] = 'MakerNote';
                TAGS[0x9286] = 'UserComment';
                TAGS[0x9290] = 'SubsecTime';
                TAGS[0x9291] = 'SubsecTimeOriginal';
                TAGS[0x9292] = 'SubsecTimeDigitized';
                TAGS[0xa000] = 'FlashPixVersion';
                TAGS[0xa001] = 'ColorSpace';
                TAGS[0xa002] = 'ExifImageWidth';
                TAGS[0xa003] = 'ExifImageHeight';
                TAGS[0xa004] = 'RelatedSoundFile';
                TAGS[0xa005] = 'ExifInteroperabilityOffset';
                TAGS[0xa20e] = 'FocalPlaneXResolution';
                TAGS[0xa20f] = 'FocalPlaneYResolution';
                TAGS[0xa210] = 'FocalPlaneResolutionUnit';
                TAGS[0xa215] = 'ExposureIndex';
                TAGS[0xa217] = 'SensingMethod';
                TAGS[0xa300] = 'FileSource';
                TAGS[0xa301] = 'SceneType';
                TAGS[0xa302] = 'CFAPattern';
                //... add more if you like.
                //See http://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html
            private function dataHandler(e:ProgressEvent):void{
                //EXIF data in top 64kb of data
                if(m_urlStream.bytesAvailable >= 64*1024){
                    m_urlStream.readBytes(m_data, 0, m_urlStream.bytesAvailable);
                    m_urlStream.close();
                    processData();
            private function processData():void{
                var iter:int=0;
                //confirm JPG type
                if(!(m_data.readUnsignedByte()==0xff && m_data.readUnsignedByte()==0xd8))
                    return stop();
                //Locate APP1 MARKER
                var ff:uint=0;
                var marker:uint=0;
                for(iter=0;iter<5;++iter){ //cap iterations
                    ff = m_data.readUnsignedByte();
                    marker = m_data.readUnsignedByte();
                    var size:uint = (m_data.readUnsignedByte()<<8) + m_data.readUnsignedByte();
                    if(marker == 0x00e1) break;
                    else{
                        for(var x:int=0;x<size-2;++x) m_data.readUnsignedByte();
                //Confirm APP1 MARKER
                if(!(ff == 0x00ff && marker==0x00e1)) return stop();
                //Confirm EXIF header
                var i:uint;
                var exifHeader:Array = [0x45,0x78,0x69,0x66,0x0,0x0];
                for(i=0; i<6;i++) {if(exifHeader[i] != m_data.readByte()) return stop();}
                //Read past TIFF header
                m_intel = (m_data.readByte()!=0x4d);
                m_data.readByte(); //redundant
                for(i=0; i<6;i++) {m_data.readByte();} //read rest of TIFF header
                //Read IFD data
                m_loc = 8;
                readIFD(0);
                //Read thumbnail
                if(m_thumbnailData){
                    var loader:Loader = new Loader();
                    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbnailLoaded);
                    loader.loadBytes(m_thumbnailData);
                else stop();
            //EXIF data is composed of 'IFD' fields.  You have IFD0, which is the main picture data.
            //IFD1 contains thumbnail data.  There are also sub-IFDs inside IFDs, notably inside IFD0.
            //The sub-IFDs will contain a lot of additional EXIF metadata.
            //readIFD(int) will help read all of these such fields.
            private function readIFD(ifd:int):void{
                var iter:int=0;
                var jumps:Array = new Array();
                var subexifJump:uint=0;
                var thumbnailAddress:uint=0;
                var thumbnailSize:int=0;
                // Read number of entries
                var numEntries:uint;
                if(m_intel) numEntries = m_data.readUnsignedByte() + (m_data.readUnsignedByte()<<8);
                else numEntries = (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte());
                if(numEntries>100) numEntries=100; //cap entries
                m_loc+=2;
                for(iter=0; iter<numEntries;++iter){
                    //Read tag
                    var tag:uint;
                    if(m_intel) tag = (m_data.readUnsignedByte()) + (m_data.readUnsignedByte()<<8);
                    else tag = (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte());
                    //read type
                    var type:uint;
                    if(m_intel) type = (m_data.readUnsignedByte()+(m_data.readUnsignedByte()<<8));
                    else type = (m_data.readUnsignedByte()<<8)+(m_data.readUnsignedByte()<<0);
                    //Read # of components
                    var comp:uint;
                    if(m_intel) comp = (m_data.readUnsignedByte()+(m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<24));
                    else comp = (m_data.readUnsignedByte()<<24)+(m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<0);
                    //Read data
                    var data:uint;
                    if(m_intel) data= m_data.readUnsignedByte()+(m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<24);
                    else data = (m_data.readUnsignedByte()<<24)+(m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<0);
                    m_loc+=12;
                    if(tag==0x0201) thumbnailAddress = data; //thumbnail address
                    if(tag==0x0202) thumbnailSize = data;  //thumbnail size (in bytes)
                    if(TAGS[tag] != undefined){
                        //Determine data size
                        if(DATASIZES[type] * comp <= 4){
                            //data is contained within field
                            m_exif[TAGS[tag]] = data;
                            m_exifKeys.push(TAGS[tag]);
                        else{
                            //data is at an offset
                            var jumpT:Object = new Object();
                            jumpT.name = TAGS[tag];
                            jumpT.address=data;
                            jumpT.components = comp;
                            jumpT.type = type;
                            jumps.push(jumpT);
                    if(tag==0x8769){ // subexif tag
                        subexifJump = data;
                var nextIFD:uint;
                if(m_intel) {
                    nextIFD= m_data.readUnsignedByte()+(m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<24);
                else {
                    nextIFD = (m_data.readUnsignedByte()<<24)+(m_data.readUnsignedByte()<<16) + (m_data.readUnsignedByte()<<8) + (m_data.readUnsignedByte()<<0);
                m_loc+=4;
                //commenting this out, as suggested in the comments.
                //if(ifd==0) jumps = new Array();
                for each(var jumpTarget:Object in jumps){
                    var jumpData:Object = null;
                    for(;m_loc<jumpTarget.address;++m_loc)m_data.readByte();
                    if(jumpTarget.type==5){
                        //unsigned rational
                        var numerator:uint = m_data.readInt();
                        var denominator:uint = m_data.readUnsignedInt();
                        m_loc+=8;
                        jumpData = numerator / denominator;
                    if(jumpTarget.type==2){
                        //string
                        var field:String='';
                        for(var compGather:int=0;compGather<jumpTarget.components;++compGather){
                            field += String.fromCharCode(m_data.readByte());
                            ++m_loc;
                        if(jumpTarget.name=='DateTime' ||
                            jumpTarget.name=='DateTimeOriginal' ||
                            jumpTarget.name=='DateTimeDigitized'){
                            var array:Array = field.split(/[: ]/);
                            if(parseInt(array[0]) > 1990){
                                jumpData = new Date(parseInt(array[0]), parseInt(array[1])-1,
                                    parseInt(array[2]), parseInt(array[3]),
                                    parseInt(array[4]), parseInt(array[5]));
                        else jumpData = field;
                    m_exif[jumpTarget.name] = jumpData;
                    m_exifKeys.push(jumpTarget.name);
                if(ifd==0 && subexifJump){
                    //jump to subexif area to obtain meta information
                    for(;m_loc<data;++m_loc) m_data.readByte();
                    readIFD(ifd);
                if(ifd==1 && thumbnailAddress && m_loadThumbnail){
                    //jump to obtain thumbnail
                    for(;m_loc<thumbnailAddress;++m_loc) m_data.readByte();
                    m_thumbnailData = new ByteArray();
                    m_data.readBytes(m_thumbnailData, 0, thumbnailSize);
                    return;
                // End-of-IFD
                // read the next IFD
                if(nextIFD){
                    for(;m_loc<nextIFD;++m_loc) m_data.readUnsignedByte();               
                if(ifd==0 && nextIFD)
                    readIFD(1);
            private function thumbnailLoaded(e:Event):void{
                m_thumbnailData.clear();
                var loader:LoaderInfo = e.target as LoaderInfo;
                var bitmap:Bitmap = loader.content as Bitmap;
                if(bitmap != null){
                    m_thumbnailBitmapData = bitmap.bitmapData;
                stop();
            // Releases m_data and dispatches COMPLETE signal.
            private function stop():void{
                m_data=null;
                dispatchEvent(new Event(Event.COMPLETE));
                return;

  • CameraRoll & CameraUI image orientation

    Hi,
    I am trying to read the Orientation tag in EXIF image data grabbed with CameraRoll or CameraRollUI using AIR 3.6 on iOS 6.1
    To achieve this, I use this library coded by Christian Cantrell :
    http://blogs.adobe.com/cantrell/archives/2011/10/parsing-exif-data-from-images-on-mobile-d evices.html
    Unfortunantly, it raises an error when I try to parse the Byterray containing the EXIF data :
    var exifInfo:ExifInfo = new ExifInfo( eb );
    TypeError: Error #1034: Type Coercion failed: cannot convert "<tags level="0th IFD TIFF Tags">
      <tag tag_name="Image width" field_name="ImageWidth" id="0x0100" compressed="J">
        <uncompressed chunky="M" planar="M" ycc="M" />
      ... INSERT BIG CHUNK OF XML HERE ...
    </tags>" to XML.
              at jp.shichiseki.exif::ExifInfo/readIFDs()[/Users/***/Google Drive/AS3/libs/jp/shichiseki/exif/ExifInfo.as:100]
              at jp.shichiseki.exif::ExifInfo()[/Users/***/Google Drive/AS3/libs/jp/shichiseki/exif/ExifInfo.as:63]
    It seems that Air can't cast the data into XML, but it's kind of crazy because I am able to see all the data in the error text (I purposedly truncated it here for not flooding this post) and it's XML valid. I had a look into the ExifInfo class, but it's hard to see where the error comes from.
    I really need to get access to these data, since it's the only way to determine image orientation in iOS. Or is there any native extention thaht I could use to achieve this ?
    Any advice will be welcome as I am stuck on a project for a client because of this.
    Thank you all !

    Hello Frog,
    a very (very) dirty solution could be :
    - use a try...catch...finally block to prevent the error raising
    - in the catch block, parse the error message to get your orientation value (String method, regexp...)
    [code]
    var myExifData:XML;
    try {
         // try to get the exif data
         var exifInfo:ExifInfo = new ExifInfo( eb );
    } catch(err:Error) {
         // fails, but maybe I can get the exif info in the error message...
         myExifData = parseExifError(err.message); // parse the error message to get your orientation info...
    } finally {
        do what I have to do with my image : rotate, scale....
    [/code]
    BTW, PhoneGap is perfectly able to get orientation of an image from the camera roll. So there IS a solution somewhere.
    Maybe you could try to make a native extension ? It's not so hard for little things like that...
    My 2 cents
    Nicolas

  • Image Orientation/Rotation Problem in Lightroom 3.2 Final

    This is a continuation of my previous post regarding this same problem in 3.2RC. It's still happening in the Final version of Lightroom 3.2.
    THE PROBLEM
    Image orientation is not working properly in Lightroom 3.2. This affects newly imported images and images that were already in my Lightroom database -  and which have been in the database since Version 1.
    Here's a screen capture showing the strange displays I'm seeing in  Lightroom's grid mode:
    Notice the odd angle of the image. When I use the Rotate Photo Left tool, the display looks like this sometimes. After a second or so, it will snap to either a vertical or horizontal orientation by itself but rarely gives me the 90-degree rotation this tool should give. The image may flip 90-degrees or 180-degrees, there's no way to tell.
    When I view the image in Loupe view or on my second monitor, the orientation shown in Grid view does not match that displayed in Loupe Vew. For this particular image, Grid view currently shows it as correctly orientated as a horizontal while Loupe view shows it rotated 90-degrees to the right. Shouldn't they match?
    BACKGROUND
    I never had a problem with image orientation in any preveious version of Lightroom prior to Lightroom 3.2RC and 3.2 Final. So, it seems to be a bug in 3.2. I'm still using the same computer and video card I used with previous versions. My operating system is Windows 7 Home Premium. Both Windows and Lightroom are 64-bit.
    HELP!
    Is anyone else having this problem? How can I solve it?
    Alan
    PhtooCitizen.com

    The size of the catalogue is almost certainly not at play here.
    FWIW, I recall seeing something like this once a long time ago on a Mac, possibly with Lr 3 beta, or Lr 2.x.  It went away with a restart. It almost looks like a threading issue, where a thread is suspended or preempted and then is lost or disconnected from the main UI thread.
    I recall you can just rotate the image again and it will right itself.
    Adobe fist-line support seem to want to use the number of images in the catalogue as some sort of catch-all.  The problem with this is that most of us can demonstrate that there is little correspondence with the number of image IDs in the database and many reported UI artefacts.
    I'd keep raising this with them, and suggesting that the size of the catalogue is probably not at play here. As a tactic, you can ask what the maximum size of a catalogue should be, and if it is raw images or the number of changes to the images and virtual copies that is the problem, and if this can be verified by second- or third-line support.

  • Error in saving modified image to Library (ios 4.3)

    Reference thread:
    https://discussions.apple.com/message/7211117?messageID=7211117
    I still have an error in my ios (4.3) code that "cannot type cast @selector expression" when I try to do the following:
    // Save image
    UIImageWriteToSavedPhotosAlbum(imageCopy, self, (SEL)@selector(image:didFinishSavingWithError:contextInfo:), nil);
    If I have the following I get an error message, I'm looking for a fix, so I can save the modified image to my ios device library.
    I also saw this as an option ( http://iphoneincubator.com/blog/windows-views/image-processing-tricks ):
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(imageSavedToPhotosAlbum: didFinishSavingWithError: contextInfo:), context);
    But if I change image: to imageSaveToPhotosAlbum then it complains that context was not defined.
    I could use some help!!  Thank you.

    Seen this thread?
    https://devforums.apple.com/message/465549#465549

  • Some email images do not show while using the icloud web app.  I can see the images on my IOS devices and in gmail but I only see a small gray box in the icloud web mail app.  Load HTML images is checked in preferences.

    Some email images do not show while using the icloud web app.  I can see the images on my IOS devices and in gmail but I only see a small gray box in the icloud web mail app.  Load HTML images is checked in preferences.  Is there a solution to this issue?

    I've seen the opposite issue.  My wife recieved an email with jpg attachments.  She couldn't see or print them on her iPhone 4S but they showed up fine in iCloud or in the mail app.  I had her forward the email to herself and then they showed up.  I assume there is an issue with how Apple is processing the attachments and resending causes them to get reformatted in a way that makes them easier to handle.
    So yeah.  Seems like some bugs.  Hope Apple fixes them soon.

  • Can you lock the background image orientation?

    Hello all
    Is there a way to lock the image orientation? When I turn the iPad, I want the apps to rotate, but I want the background image to stay portrait.
    If not, is there someplace i can suggest the feature?
    Thanks!

    No. It will orient along with your view. You can post feedback here: http://www.apple.com/feedback/

  • Indicated Image Orientation is Incorrect

    Hi all:
    Aperture 2.1.1 has begun to incorrectly tag images in the portrait orientation as “Landscape,” even though the images were correctly oriented as portrait during import and when viewing them in the Browser or Full screen mode. Doesn’t matter which camera (Nikon D80, Canon Powershot SD600 or Panasonic DMC-TZ1) I import from.
    Additionally, when viewing the incorrectly tagged images in the Finder window, set to column view, portrait-oriented images correctly oriented in Aperture are incorrectly oriented as landscape in the Finder window. They also open as landscape-oriented images in Preview. If I correctly rotate the image in Preview, then save the file, the Finder correctly displays the image, but the thumbnail in Aperture becomes corrupted: The image orientation in the Browser window remains as portrait, but the image preview has rotated 90 degrees.
    Can’t tell if this occurred since upgrading to Aperture 2.1.1 or Mac OS 10.5.5. Any ideas?

    Thanks for the tip. I did exactly what you suggested and ended up with over 2000 extra versions (sometimes up to six) of my files, some with strangely cropped previews, and files long since deleted. All these extra versions did not include any metadata I added (i.e., keywords, description, byline, city, state, etc.). In some cases the file name reverted back to the original one assigned by the camera(s).
    Meanwhile, rebuilding the database did not solve the incorrect orientation tag issue. All my images are referenced masters. No masters in my database are stored in the Aperture library.
    Thanks for any advice out there.

  • HT5137 Words with friends won't go to landscape orientation in iOS 7.0. Any suggestions

    Words w friends won't go to landscape orientation in iOS 7. Restarted app, restarted pad, reinstalled app.  No good! Any suggestions?

    Least your Words with Friends is on your ipad mine is gone.  Likely have to install back up at home later.

  • Image orientation upon importing?

    HI, I am using Photoshop elements 8. I was wondering if anybody knows of an option which controls image orientation during photo import? My situation; I have a large catalogue of photos and I have a canon 40d which I use for my serious photo work and I use an Olympus 6000 tough for play. Just recently when I went to upload my images off of the Olympus point and shoot all of my portrait image when imported are laying on their side or are presented in a landscape style. Now I have to go through manually rotate each image or select groups of images which is very time consuming. I don’t know what happen, elements use to rotate the images to their correct orientation during import. Does anybody know how to solve this?
    Thanks,
    jt

    The photo you posted has the Orientation field in the EXIF metadata set to Horizontal (landscape):
    Image Width                : 3648
    Image Height               : 2736
    Make                       : OLYMPUS IMAGING CORP.
    Camera Model Name          : uT6000,ST6000
    Orientation                : Horizontal (normal)
    So that's why PSE isn't rotating it.  Perhaps there's a setting in your camera you need to enable to have it record the Orientation properly, or perhaps the orientation sensor broke?
    I used Exiftool to examine the EXIF metadata in the photo -- it is the most reliable way of examining all the photo metadata without the "helpful" interpretation and filtering that most programs (like PSE) provide.

  • Image Orientation in Blog and Blog Summary

    Inserted a picture into a blog entry and rotated it 90 deg.
    In the blog summary, on the summaries page, the image reverts to its original orientation.
    Can't see a way to change the image orientation on the summary page, which would be undesirable anyway - don't want to have to edit two pages for every entry.
    Has anyone experienced this problem?
    Are there any solutions?
    Thanks

    I played around with the orientation manually, and found that if I change the orientation, the image would be correctly "orientated' in the lower part of the split viewer, but the actual image would be off by 90 degrees. I then reoriented the image back (sideways view in the bottom file-strip) and the large image would display correctly again, and, the bottom image corrected itself to the normal orientation. So, by changing each sideways image 90 degrees once and then back again, seems to "fix' the issue. Still not sure how I applied this feature.

  • Facetime image orientation?

    I held a facetime chat with a friend and was completely unable to cause both phones to properly display horizontal oriented images. Each person saw the other horizontal image as a belt-line horizontal you would see on a vertically oriented iPhone.
    With both vertical-no problem.
    The ads clearly show several examples of both ends of the conversation captured in horizontal orientation, but nothing we could do would convince the phones to behave this way.
    Any clues?

    Found it!
    After searching the iPhone docs several times with no success, an article on the internet pointed to the easy Image Orientation Lock/Unlock control.
    For others with this "issue", it's found by double clicking the Home button on the iPhone, then flicking the line of apps to the right. Most/many of us are familiar with flicking this to the left to search back in our app usage, but when you flick to the right, there's a set of iconic controls, including the circle around a lock symbol.
    All well now. Thanques to all.

  • OCR in Java to set image orientation.

    I want to set the orientation of an image after scanning. I thought the only way to do this is to use some type of OCR (Optical Character Recognition). I was curious if there are any small packages out there to do this (or another way to set image orientation. All the ones I have found are giant all-in-one imaging solutions.
    Thanks

    I think that you need OCR package at javaocr.com

  • [solved] Image orientation issue

    Hello,
    I have a problem with image orientation.
    I am using Arch64 and KDE 4.4.5 from Arch.
    When I look at my pictures in digikam (1.3.0) or gwenview, portrait pictures are displayed fine. If I send them with thunderbird, portrait images are displayed with landscape orientation.
    The only workaround I found is to rotate twice the image with digikam (once on the right and once on the left to set it back to previous orientation).
    I have noticed that EXIF information change...does anyone have the same issue and knows what is the cause of it ?
    before, orientation is "droit, haut" = "right, top"
    after, orientation is "haut, gauche" = "top, left" and width and heigth size is set...
    regards
    Last edited by supercow (2010-07-08 17:20:11)

    Digital cameras create images that aren't rotated as such -- as plain images they're always in landscape format. If your camera has an orientation sensor, it will merely hint at the intended orientation by setting the exif orientation value in the jpeg file (instead of really rotating the image and creating a jpeg with a portrait format).
    Not all programs interpret all exif data. Programs that don't interpret the exif orientation (as thunderbird seems to do it) will display the image as it is (always in landscape), while others (like digikam) use the exif data to decide on how to rotate the image for display. So digikam is just smart enough to show the image in it's "logical" portrait format while it's "physically" remains in landscape format.
    To make a real portrait jpeg, you have to really rotate it and adjust the exif orientation accordingly, which is what effectively happens if you use digikam in the way you describe it. So that's not a workaround, but required to make sure that all programs display the images in the desired format, and not just those that are smart enough to honor the exif orientation.
    See the jpegexiforient and jpegautotran programs for an explanation and an alternative way to rotate images based on their exif orientation value.
    Last edited by hbekel (2010-07-07 21:55:00)

  • Multiple copies of the same image in iPhoto iOS 4S

    Very strange I've got images that have been duplicated 5, 6 times in the Photos section of iPhoto on my iPhone 4S iOS 5.1. Anyone got the same issue? It's like it pulls a copy of the image from every place the image appears, Camera roll, Album, Stream and Mac. Anyone else noticed this?

    Yes, I am having the same problem. Here is why the iPhone on my iPad looks like.
    At least one other person has the same problem. See this thread: Multiple versions of same photo
    Brant

Maybe you are looking for

  • Window caption different in Webhelp Pro

    I was looking to remove the search tab and any related functionality as well as some other areas from my Webhelp Pro project and it appears that i cannot find out where to do this. I have a training manual that displays the windows properties for HTM

  • Configuration DMs

    Hi, I'm new to DMS. If anyone guide me with the link to help.sap.com or any wiki available. Regards, Saravanan.S

  • Leopard Terminal.app no longer supports ANSI print escape sequences?!!

    I print my email using pine's "attached-to-ansi" option, which used to work great in Tiger with Terminal.app. It no longer works in Leopard. It also breaks things like the "ansiprt" Unix command. This is a start/stop escape sequence that diverts text

  • My iphone is lost please help.

    Hi i have a problem. I go to school in ireland and my iphone 4 black 16 gb was stolen. I called the company to block the phone and sim they did so. later i went to guardas (police) station and the guard(policeman) said that the can track my iphone bu

  • Help major error!!

    I'm getting this error message when I try to delete one cut on my timeline, then adobe crashes.  Can anyone shed any light. I am on a tight deadline and honestly don't know what to do; [/singlebarrel/releases/2014.03/shared/adobe/MediaCore/Backend/Sr