www.webdeveloper.com
Recent Articles
  • Finding Slow Running Queries in ASE 15
  • A More Advanced Pie Chart for Analysis Services Data
  • Adobe AIR Programming Unleashed: Working with Windows
  • Performance Testing SQL Server 2008's Change Data Capture Functionality
  • The ABC's of PHP: Introduction to PHP
  • How to Migrate from BasicFiles to SecureFiles Storage
  • Why the Twitter Haters Are Wrong
  • User Personalization with PHP: Beginning the Application
  • Whats in an Oracle Schema?
  • Lighting Enhancement in Photoshop
  •  

    Go Back   WebDeveloper.com > Client-Side Development > JavaScript

    JavaScript JavaScript (not Java) Discussion and technical support, including AJAX and frameworks (JQuery, MooTools, Prototype...)

    Reply
     
    Thread Tools Search this Thread Rate Thread Display Modes
      #1  
    Old 11-21-2009, 05:56 AM
    janmartin janmartin is offline
    Registered User
     
    Join Date: Nov 2009
    Posts: 15
    display exif from image?

    Hi,

    I need to automatically display the images exif data, but it only works after clicking the image.
    Whats wrong?

    (Not) working Example:
    http://www.diystreetview.org/data/test/test.html
    all files:
    http://www.diystreetview.org/data/test/

    Code:
    <html>
    <head>
    
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
    <script type="text/javascript" src="jquery.exif.js"></script>
    
    <title>test.html</title>
    </head>
    
    <body>
    <div id="imagediv">
    <img src="images/00000036.jpg" width="900px" id="imgA" exif="true" />
    </div>
    
    
    <script>
    // This cript should automatically display the exif info of the image. Without user interaction.
    // However it only works when the image is clicked.
    // 
    // EXIF Code from http://www.nihilogic.dk/labs/exifjquery/
    
    // FAILING:
    document.getElementById('imagediv').innerHTML +="<br \/\>GPSLatitude: " + $("#imgA").exif("GPSLatitude");
    
    // WORKS:
    $("#imgA").click(
    	function() {
    document.getElementById('imagediv').innerHTML +="<br \/\>GPSLatitude: " + $("#imgA").exif("GPSLatitude");
    
    	} // end function
    ) // end click
    
    </script>
    </body>
    </html>
    Reply With Quote
      #2  
    Old 11-21-2009, 09:44 AM
    Fang's Avatar
    Fang Fang is offline
    Resistance is futile
     
    Join Date: Apr 2003
    Location: Netherlands
    Posts: 18,413
    Wait for the document to load, even the exif script does this.
    __________________
    At least 98% of internet users' DNA is identical to that of chimpanzees
    Reply With Quote
      #3  
    Old 11-21-2009, 11:06 AM
    janmartin janmartin is offline
    Registered User
     
    Join Date: Nov 2009
    Posts: 15
    How to change the code for waiting?
    Reply With Quote
      #4  
    Old 11-21-2009, 01:49 PM
    Fang's Avatar
    Fang Fang is offline
    Resistance is futile
     
    Join Date: Apr 2003
    Location: Netherlands
    Posts: 18,413
    ready
    __________________
    At least 98% of internet users' DNA is identical to that of chimpanzees
    Reply With Quote
      #5  
    Old 11-21-2009, 03:19 PM
    janmartin janmartin is offline
    Registered User
     
    Join Date: Nov 2009
    Posts: 15
    Hi Fang,

    I gave it a try, and I cant get it working.
    So it's probably me.

    Please stop passing on ideas and show me how its done.

    My last try:

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                        "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
      <script src="jquery-1.3.2.min.js"></script>
      <script src="jquery.exif.js"></script>
      
    </head>
    <body>
    <div id="imagediv"></div>
    
    <script>
    document.getElementById('imagediv').innerHTML = "<img src=\"images/00000036.jpg\" width=\"400px\" id=\"imgA\" exif=\"true\" \/\>";
    
    $(document).ready(function(){
    document.getElementById('imagediv').innerHTML +=("GPSLatitude:" + $("#imgA").exif("GPSLatitude"));
    });
     </script>
    
    </body>
    </html>
    Reply With Quote
      #6  
    Old 11-21-2009, 06:51 PM
    ssystems ssystems is offline
    Registered User
     
    Join Date: Oct 2009
    Posts: 278
    You might want to view the image as a Hex. I might overlooked it but I don't saw any GeoData inside the image.
    __________________
    Good Luck

    Santos Systems
    Reply With Quote
      #7  
    Old 11-21-2009, 07:00 PM
    janmartin janmartin is offline
    Registered User
     
    Join Date: Nov 2009
    Posts: 15
    Firefox Add-on Exif Viewer shows all the images EXIF data is in perfect order.

    You can download it here:
    https://addons.mozilla.org/en-US/fir...=exif%20viewer
    Reply With Quote
      #8  
    Old 11-23-2009, 05:19 AM
    janmartin janmartin is offline
    Registered User
     
    Join Date: Nov 2009
    Posts: 15
    Anyone?
    Reply With Quote
      #9  
    Old 11-23-2009, 05:54 AM
    Fang's Avatar
    Fang Fang is offline
    Resistance is futile
     
    Join Date: Apr 2003
    Location: Netherlands
    Posts: 18,413
    Code:
    $('#imgA').load(function() {  
    document.getElementById('imagediv').innerHTML +="<br \/\>GPSLatitude: " + $("#imgA").exif("GPSLatitude");
    });
    __________________
    At least 98% of internet users' DNA is identical to that of chimpanzees
    Reply With Quote
      #10  
    Old 11-23-2009, 06:10 AM
    janmartin janmartin is offline
    Registered User
     
    Join Date: Nov 2009
    Posts: 15
    I tried that before.

    It works 1 out of 10 times. Or less.

    Here is the new test page:
    http://www.diystreetview.org/data/test/testA.html

    All files:
    http://www.diystreetview.org/data/test/
    Reply With Quote
      #11  
    Old 11-23-2009, 06:50 AM
    Fang's Avatar
    Fang Fang is offline
    Resistance is futile
     
    Join Date: Apr 2003
    Location: Netherlands
    Posts: 18,413
    Seems to require a slight delay.
    Code:
    $('#imgA').load(function() {  
    setTimeout(function(){return document.getElementById('imagediv').innerHTML +="<br \/\>GPSLatitude: " + $("#imgA").exif("GPSLatitude");}, 500);
    });
    __________________
    At least 98% of internet users' DNA is identical to that of chimpanzees
    Reply With Quote
      #12  
    Old 11-23-2009, 06:59 AM
    janmartin janmartin is offline
    Registered User
     
    Join Date: Nov 2009
    Posts: 15
    Thanks Fang,

    you made my day.
    It works.
    I will inform the author of the exif library.
    Maybe there is something he can update.

    Jan
    Reply With Quote
      #13  
    Old 11-23-2009, 11:08 AM
    janmartin janmartin is offline
    Registered User
     
    Join Date: Nov 2009
    Posts: 15
    To early to celebrate.

    I need the value in a variable to deal with it later.
    But this fails:

    Code:
    var gpslatitude;
    $('#imgA').load(function() {  
    setTimeout(function(){return gpslatitude=$("#imgA").exif("GPSLatitude");}, 500);
    });
    //Test:
    document.getElementById('nav').innerHTML +=gpslatitude;

    Last edited by janmartin; 11-23-2009 at 11:13 AM.
    Reply With Quote
      #14  
    Old 11-23-2009, 11:36 AM
    Fang's Avatar
    Fang Fang is offline
    Resistance is futile
     
    Join Date: Apr 2003
    Location: Netherlands
    Posts: 18,413
    Same problem again; the innerHTML is executed before setTimeout has finished.
    Save the value in gpslatitude and wait for user interaction or delay writing until setTimeout has finished.
    __________________
    At least 98% of internet users' DNA is identical to that of chimpanzees
    Reply With Quote
      #15  
    Old 11-23-2009, 11:47 AM
    janmartin janmartin is offline
    Registered User
     
    Join Date: Nov 2009
    Posts: 15
    I changed a single line of the test:

    Code:
    setTimeout(function(){return document.getElementById('nav').innerHTML +=gpslatitude;}, 1000);
    It works.

    However what i really need is to get the data into a variable and out of the whole setTimeout thingy:
    This code fails:
    Code:
    $('#imgA').load(function(){setTimeout(function(){return myGPSLatitude=$("#imgA").exif("ImageDescription");}, 1000);});
    document.getElementById('nav').innerHTML += myGPSLatitude;
    Any idea?

    Also there must be a way around this whole two-times-waiting?
    Is it an error in the jquery.exif.js i am using?

    Thanks,
    Jan

    Last edited by janmartin; 11-23-2009 at 12:05 PM.
    Reply With Quote
    Reply

    Bookmarks


    Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
     
    Thread Tools Search this Thread
    Search this Thread:

    Advanced Search
    Display Modes Rate This Thread
    Rate This Thread:

    Posting Rules
    You may not post new threads
    You may not post replies
    You may not post attachments
    You may not edit your posts

    BB code is On
    Smilies are On
    [IMG] code is Off
    HTML code is Off
    Forum Jump


    All times are GMT -5. The time now is 05:37 AM.



    Acceptable Use Policy


    The Network for Technology Professionals

    Search:

    About Internet.com

    Legal Notices, Licensing, Permissions, Privacy Policy.
    Advertise | Newsletters | E-mail Offers

    Powered by vBulletin® Version 3.7.3
    Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.