Read EXIF data with Javascript
Update: I've also posted a jQuery plugin that uses this library. An example of using GPS tags with Google maps has also been posted here.
Inspired by a comment on Ajaxian, I killed another afternoon or two making a small EXIF reader library capable of reading EXIF info from JPEG images, figuring I would at least learn a bit about EXIF information and the JPEG (and TIFF) image formats.
Before we start, a small disclaimer. I'm somewhat of a dork when it comes to cameras and photography and my digital camera always laughs at me after I take a picture. So I won't go into details about the actual data, since I don't even know what half of these EXIF tags mean.
So, there are two parts to the problem. First step is to get access to the raw binary data of the JPEG. Now, while it's easy to get to the pixel data using canvas, we don't get any of the data around the actual image, and that's where the interesting parts are hidden. A while back when I first started nerding around with the idea of reading data from images (for the PNG compression and other things), I also toyed with the idea of just reading binary files raw and found that other people had already done good work on this.
As it turns out, we can easily get access to binary data using simple Ajax techniques and we just need to do a few methods for reading bytes, integers and string at given offsets. Binary data is readily available through the responseText property in both Firefox and Safari, it seems, but both IE and Opera pretty much destroy the data. Luckily, IE provides another property on its XHR object, "responseBody" which holds the binary data, but unfortunately our access to this data is also rather limited in Javascript. A quick fix is given to us by VBScript. I shame myself and make a simple VBS function to call from our getByteAt function when using IE and now we've got binary access covered in all but Opera. If anyone knows of a way to access the data in Opera, please leave a comment.
Second step involves a lot of reading. If you're interested, read the EXIF and TIFF specs yourself. EXIF data is basically a small TIFF file embedded within the JPEG file. Anyway, the rest is simply seeking out the relevant data portions and reading them into a Javascript structure (see exif.js).
And the result..
A custom attribute on an image element will now load the EXIF data when the page has loaded and make it available for scripting as follows
One limitation before the end. Since we're using XHR, you can only access the data from images on your own domain.
Check out the EXIF test page here
Update: I've also posted a jQuery plugin that uses this library. An example of using GPS tags with Google maps has also been posted here.
Inspired by a comment on Ajaxian, I killed another afternoon or two making a small EXIF reader library capable of reading EXIF info from JPEG images, figuring I would at least learn a bit about EXIF information and the JPEG (and TIFF) image formats.
Before we start, a small disclaimer. I'm somewhat of a dork when it comes to cameras and photography and my digital camera always laughs at me after I take a picture. So I won't go into details about the actual data, since I don't even know what half of these EXIF tags mean.
So, there are two parts to the problem. First step is to get access to the raw binary data of the JPEG. Now, while it's easy to get to the pixel data using canvas, we don't get any of the data around the actual image, and that's where the interesting parts are hidden. A while back when I first started nerding around with the idea of reading data from images (for the PNG compression and other things), I also toyed with the idea of just reading binary files raw and found that other people had already done good work on this.
As it turns out, we can easily get access to binary data using simple Ajax techniques and we just need to do a few methods for reading bytes, integers and string at given offsets. Binary data is readily available through the responseText property in both Firefox and Safari, it seems, but both IE and Opera pretty much destroy the data. Luckily, IE provides another property on its XHR object, "responseBody" which holds the binary data, but unfortunately our access to this data is also rather limited in Javascript. A quick fix is given to us by VBScript. I shame myself and make a simple VBS function to call from our getByteAt function when using IE and now we've got binary access covered in all but Opera. If anyone knows of a way to access the data in Opera, please leave a comment.
Second step involves a lot of reading. If you're interested, read the EXIF and TIFF specs yourself. EXIF data is basically a small TIFF file embedded within the JPEG file. Anyway, the rest is simply seeking out the relevant data portions and reading them into a Javascript structure (see exif.js).
And the result..
A custom attribute on an image element will now load the EXIF data when the page has loaded and make it available for scripting as follows
<img src="DSCN0614.JPG" exif="true" id="MyPrettyImage" />
I've tried it on a few pictures of my own and some found on the internet and it seems to work just fine, but it needs a few checks here and there, so it might go wonky if it encounters something unexpected.
var oImg = document.getElementById("MyPrettyImage");
alert("I was taken by a " + EXIF.getTag(oImg, "Make") + " " + EXIF.getTag(oImg, "Model"));
// or use the EXIF.pretty() function to put all tags in one string, one tag per line.
alert(EXIF.pretty(oImg.exifdata));
One limitation before the end. Since we're using XHR, you can only access the data from images on your own domain.
Check out the EXIF test page here
This is killer. Awesome work, Jacob!
May 10, 2008 at 9:18 PM AnonymousAbsolute class! Very impressive, going to have to give it a spin this week. Cheers, Justin
May 11, 2008 at 9:02 PM Jacob SeidelinThanks. Please report back if there are any problems!
May 11, 2008 at 10:16 PM AnonymousGreat work!
May 12, 2008 at 11:30 AM UnknownBut it doesn't work in Konqueror 3.5.9.
First off, this is amazing! Nice work! Thank you for sharing this tremendously useful bit of code!
May 18, 2008 at 1:48 AM Jacob SeidelinA question, though: Is there a way to implement this such that it will read the EXIF data from a photo as the page loads and give you access to that data to print it to the page as the page is rendered? (example: A page with a single photo displayed and the EXIF data in a little text table below it.)
I've tried pre-loading the image and using the onLoad handler, but all the EXIF data returns "undefined". On the same page (same image), the onClick handler copied from your example works fine, though.
Any thoughts? Am I doing something wrong, or is this a limitation of the object model?
Thanks again for this amazing new toy! :)
The problem is that the data is loaded asynchronously after the page has finished loading, so the data is only ready some short amount of time after page load.
May 18, 2008 at 2:05 AM AnonymousMaybe I can add an option to have a custom function called for each image as the data gets loaded and you can then have that function do whatever you need with the data (ie. print it to the page).
And currently it only reads data from images defined in the markup, but I'll add a function for getting the data from dynamically created images, also with an optional callback function to let you know when the data is ready.
I'll see what I can do.
Thanks for the feedback, glad you find it useful!
Is there a way to get GPS info to?
May 20, 2008 at 6:01 AM Jacob SeidelinYea sure, that was just me being lazy. I'll put GPS on the todo list.
May 20, 2008 at 6:57 AM AnonymousCan I get exif data on commandline of WindowsXP?
June 17, 2008 at 12:44 AM AnonymousIf can, how to write command?
Is there anyway to get this to work for an image that I don't want to actually display? Basically I have an application where I'm given the name of an image and I want to extract the date/time stamp, upload that information into a database using ajax and then upload the file to the server. I've tried accessing the relevant methods directly, but obviously the exif='true' in the img tag is doing something I don't understand.
August 5, 2008 at 1:21 PM Jacob Seidelin@Paul Chapin: Have you tried doing something similar to the example on this page?
August 8, 2008 at 10:13 AM Jacob SeidelinIt should let you load EXIF info from any Image object, also those not added to the page.
And make sure you set the onload event before setting the src!
August 8, 2008 at 10:16 AM AnonymousAlso, are you trying to access the info before the image has been uploaded (ie. it's still on the users desktop)? If so, you'll probably run into security restrictions.
This is great--I'm having a lot of fun with it. That said, I noticed a problem with one field in particular that I was interested in: UserComment. You can see in your third example on this page--UserComment is not being interpreted correctly. I figured out that since the UserComment tag (and other tags) has an undefined data type, any text was getting turned into an array of ASCII codes.
August 14, 2008 at 12:44 PM Jacob SeidelinI made a change to readTagValue, and here is the code and the very early, ugly results of my efforts. If you click on the sixth picture, you can see that the UserComment shows up correctly.
@sarah: Thanks. You're right that the data is just returned as an array of byte values. I'll have to check the EXIF specs again to see if I can make the assumption that the UserComment field will always be ASCII text. If so, I'll try handle to handle it better.
August 14, 2008 at 1:32 PM AnonymousAnd thanks for the investigating and the code!
I noticed that at least one other field had the same issue: GPSProcessingMethod on the third photo. When I converted it to a string, it looked similar to UserComment: "ASCII" followed by three characters and then the rest of the text. So my theory was that I could check for "ASCII" to determine whether a field should be treated as text or not. The fifth photo has some non-text information in UserComment. It doesn't seem to be very *useful* information (an array of zeros), but if you always treat UserComment as a string, you might run into a problem.
August 14, 2008 at 2:15 PM AnonymousHello,
August 15, 2008 at 7:30 AM MarkThe easiest greatest exif script I have seen. Not being extremely proficient in coding is there an easy way to pick what exif items you want to show.
Thanks
JIM
Excellent post :-)
September 11, 2008 at 12:41 PM Anonymousthis is just what I've been looking for!
going to have loads of fun combining this with javascript & html DOM.
many thanks,
Mark.
Great script and amazing work! Just what I need. :)
September 14, 2008 at 3:34 AM Jacob SeidelinI am having trouble finding the latest version, though. The one with the GPS has a 404 for exif.js and the other pages are also a mess with the download links embedded into the text and all going into different directories.
Is there somewhere a definite download place to get the latest version, all rolled into one library?
Thanx!
Wow, the GPS page was rather messed up indeed. Thanks for letting me know, it's fixed now. I'll have to reorganize some of nihilogic.dk to make it easier to find stuff, it's getting a bit messy.
September 14, 2008 at 6:30 AM AnonymousThe exif.js links here and elsewhere should all lead to the latest version now:
http://www.nihilogic.dk/labs/exif/exif.js
Wow! I was looking for a way to display photo info on a webpage and this is wonderful!!
September 16, 2008 at 9:28 AM Jacob SeidelinI've got everything working under FireFox, but I couldn't get it to work properly with Explorer 7. So I thought I'd come back here to test the demo pages.. same results.. FireFox is good, Explorer 7 is not good.
Any ideas???
thanks
Rob
Whoops. A small bug had found its way into binaryajax.js. Fixed!
September 16, 2008 at 10:03 AM AnonymousThat's perfect!!
September 18, 2008 at 2:49 PM AnonymousThanks for fixing it so quickly.
Rob
I see that any exif fields employing arrays show only the number of values in the array, but don't display the actual data from the keys (here is an example from one of my GPS-coded jpgs:
December 4, 2008 at 2:07 PM AnonymousGPSLongitude:[3 values]
I am particularly interested in GPS data so that photos can be mapped to Google, so I need something that will report Latitude and Longitude as a decimal value (decimal seems to be the usual format for internet-based geo-coding). Is this something you can do?
Whatever you can or can't do, thanks for sharing a very nice program. I am not able to originate any code myself, but I can often integrate what's already available.
david@homelands.ca
Ignore my earlier posting. I found the code snippet you had provided elsewhere on your site: it fully answered my query.
December 4, 2008 at 3:16 PM AnonymousOnce again, thank you.
david@homelands.ca
Some of the questions and comments on this page might best be answered by having a look at similar Perl, PHP, Python, ColdFusion, etc scripts that run on a web server. These analyze images while the HTML page is being generated, allowing you to inject the EXIF data into the page before it is served up to the browser.
December 18, 2008 at 2:48 PM AnonymousThis script looks very promising for what I need but I'm confused as to how I can put this script on my page.
January 14, 2009 at 12:39 AM AnonymousWould you be able to write a short tutorial on how to put this on a simple page?
Thanks a lot.
n/m figured it out. :)
January 14, 2009 at 1:16 AM Jacob SeidelinOk, cool :) Just let me know if you have any problems.
January 14, 2009 at 1:17 AM AnonymousI do have a quick question though. Is the EXIF info gathered after the image has been downloaded?
January 14, 2009 at 5:00 PM Jacob SeidelinI am looking for a script that can instantly get the 'width' property from the EXIF info before the image has been loaded into the browser. I am using this property to control the width of a table on a page and need to know the value of this property before the page is created.
I thought maybe using the EXIF info of an image would be faster then using the DOM Image.width propety.
Also do you have any plans on adding PNG support?
Thanks for your time.
Yes, it doesn't analyze the file until it's done loading, so I don't think there's any advantage of using EXIF over simply checking the image width via the DOM.
January 15, 2009 at 2:04 AM AnonymousUnless you're certain that the image contains EXIF data, it doesn't seem like a very reliable method either.
I also made this little script: http://blog.nihilogic.dk/2008/08/imageinfo-reading-image-metadata-with.html
It works pretty much like the EXIF script but reads data from the image header instead (dimensions, color depth, etc.) and supports both JPEG, PNG, GIF and BMP.
Awesome. I tried out the script you suggested and changed it load only 1004 bytes and it gets the EXIF pretty fast. It might even be faster then using php to check the image dimensions. I'm happy with the speed of your script and would use it on my site but there’s so much extra code I don't need in the 3 javascript files. I like to keep the code on my site efficient and easy to understand so I know what’s going on. Your code is way beyond me lol…
January 15, 2009 at 11:57 PM derkmdtWould it be possible to get a barebones version of your script in one javascript file? I only need the width/height from a jpeg file. I would try to do this myself but theres so much going on in your script and I don’t know enough about javascript.
Thanks.
Hi Jacob,
April 6, 2009 at 1:57 AM Jacob SeidelinI was trying your script but it doesn't seem to work local on my computer, and it does work on a webserver. Is there any explanation for this?
Thanks
@derkmdt: That's probably because no HTTP status code is returned when retrieving local files (with the "file:///" protocol). You can try also allowing status code "0" instead of just "200" and "206" in sendRequest() in binaryajax.js. Look for "oHTTP.status".
April 16, 2009 at 5:02 AM PeterHi Jacob,
May 12, 2009 at 12:48 PM AnonymousI'm building a website for my photos and ould use these scripts to display the exif data. I'm getting always an undefined on oData. Any idea what I'm doing wrong?
Thx, Peter
Well, Opera has EXIF information built into the "image properties" window, but that's not much of a help if you want to display the data inside the HTML page.
June 22, 2009 at 6:41 PM AnonymousFor some reason I get "undefined" back as the result for a query on the same photo as you are using on the site. Any idea what could be the problem?
September 3, 2009 at 1:08 PM Jacob SeidelinJWS
Are you calling the page locally or from a server? If it's online, please provide a link.
September 3, 2009 at 2:03 PM AnonymousGreat work Jacob. One question:
October 6, 2009 at 10:56 PM Jacob SeidelinIf I don't have exif='true' on an image, the browser will load the image from the server using regular http request which is for the entire page.
Now if I set the exif='true' then what happens behind the scene? Looking at your code breifly, it seems you are sending xmlhttp request to get the image information. Will this cause the full image data to be retrieved from the server by your plugin OR you are getting just the exif portion of the image?
If you are getting the whole image then it is getting loaded 2 times per image. NOT?
I haven't looked at you code in full details yet.
Yes, it is possible that the image data will be retrieved twice. There's no way (that I know of) to access the file data from the <img> element which is why the XHR is necessary. If the image is cached by the browser, it shouldn't be a big problem, though.
October 7, 2009 at 1:05 AM UnknownThe amount of data could be limited to just the EXIF data if only I knew beforehand how much data to retrieve. IIRC, I don't even know where in the file the data is located until it's been analyzed.
Hi Jacob,
November 10, 2009 at 12:51 AM Anonymousgreat job! I have 2 extension ideas that really would increase the usefulness of your javascript exif lib:
1. Include Google Gears support. With Gears, you can select multiple files by a file chooser and then have access to their binary content via the blob Object. Gears also provides means to create thumbnails of these files. So the user could pick arbitrary image files and then see their metadata. It shouldn't be too much extra work, since the blob-Object has a convenient slice-method.
2. Use ExifTool's taglists as datasource for your parser. When you run 'exiftool -listx -EXIF:All > exiftags.xml', it dumps out an xml file containing all EXIF-Tags including names, tagIDs, datatypes and translated values (in up to 7 languages ;-)). You want to convert the xml to json (e.g. with some python script) and include it as an external .js file. If you decide to extend your parser later (e.g. support for Canon Makernotes,...), you can simply obtain the necessary tag data by using 'exiftool -listx -Canon:All > canonmakernote.xml'
Two avoid two downloads per image (one to diplay the image +
January 15, 2010 at 12:56 PM Anonymousone to read exif datas) you can display the image using
its binary data.
var img=document.getElementById("myimg");
img.src="data:image/jpeg;base64," + encode64(xhr.responseText);
img.style.display="";
function encode64(inputStr)
{
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var outputStr = "";
var i = 0;
while (i> 2;
var enc2 = ((byte1 & 3) << 4) | (byte2 >> 4);
var enc3, enc4;
if (isNaN(byte2))
{
enc3 = enc4 = 64;
}
else
{
enc3 = ((byte2 & 15) << 2) | (byte3 >> 6);
if (isNaN(byte3))
{
enc4 = 64;
}
else
{
enc4 = byte3 & 63;
}
}
outputStr += b64.charAt(enc1) + b64.charAt(enc2) + b64.charAt(enc3) + b64.charAt(enc4);
}
return outputStr;
}
It should be possible without the base64 step, but I couldn't
get it to work without it. Doesn't seem to work with IE.
phil [at] philten [dot] com
Hello,
January 23, 2010 at 5:58 AM Rob This comment has been removed by the author. March 3, 2010 at 8:31 AM RobI'm working on some pictures containing IPTC data.
Is it possible to read this kind of data also?
Thanks,
Jabar
I have completed a poorly written blog post about the Java port I mentioned if you or any of your readers are interested :o)
March 3, 2010 at 8:34 AM Anonymoushttp://whelkaholism.blogspot.com/2010/03/j2me-exif-and-lightmetering-part-1.html
Hello,
April 13, 2010 at 4:39 AM OnesimusI'm looking for a script (pref. AutoIT) that edits UserComments in EXIF of jpg-files.
Thanks for any help,
Wolf Bartels privat[at]wolfbartels[dot]de
Hello,
May 9, 2010 at 7:14 PM OnesimusI am hoping that you will get this soon. I am having trouble trying to implement this onto my website. I am merely trying to get it to work.
I keep getting 'undefined' information.
The webpage that I am implementing it on is http://www.onesimustech.com/exif/
If you could get back to me as soon as possible. If I am neglecting to do something please let me know. Thanks, Jiffy
My email is onesimusdkp[at]gmail[dot]com
May 9, 2010 at 7:15 PM Tak Fujiwara(This is just for record to make it public. The problem/fix was reported to
May 31, 2010 at 12:43 AM AnonymousJacob by e-mail separately)
----------- >8 snip ----------
[Problem]
Canon EXIF is not displayed correctly by the exif.js.
The problem appears when picking Model name and other character
data.
[Correction]
In binaryajax.js version 0.1.7,
Line 80
is;
aStr[j] = String.fromCharCode(this.getByteAt(i));
change to:
aStr[j] =
String.fromCharCode(this.getByteAt(i)).replace("\x00","");
[Reason]
Canon EXIF data containg 0x00 in the character data as paddings.
----------- >8 snip ----------
Tak Fujiwara
I dont get any exif data from the pix i have, even though those pix have all the exif stuff.
June 8, 2010 at 12:52 AM mauritsbut when i copy and use the pix in this page:
http://www.nihilogic.dk/labs/exif/
it works,, wat is the problem
Hi!
August 24, 2010 at 8:10 AM Peterive used your great binaryajax and EXIF scripts on my website with succes. However, since i moved it to a new server it doesnt work anymore!
the old server was an apache server, and now its on a microsoft IIS server.
i get no error messages, it just stops working after line 198 in binaryajax.js...
i do get a "400 - bad request" in some debugger plug-ins
When trying to use these script on my pictures I got "undefined" result. After some debugging is appeared that the scripts assume a tiff offset of 8 or else dye. My pictures had different offset, so some adaptation was needed:
September 26, 2010 at 7:24 AM AnonymousIn exif.js around line 491
Remove the check for an offset of 8.
Place the actual offset if a variable oOffset
Call readTags with an offset of oOffset instead of 8.
Here under the resulting code:
------------------------------
// if (oFile.getLongAt(iTIFFOffset+4, bBigEnd) != 0x00000008) {
// if (bDebug) console.log("Not valid TIFF data! (First offset not 8)", oFile.getShortAt(iTIFFOffset+4, bBigEnd));
// return false;
// }
var oOffset = oFile.getLongAt(iTIFFOffset+4,bBigEnd);
var oTags = readTags(oFile, iTIFFOffset, iTIFFOffset+oOffset, EXIF.TiffTags, bBigEnd);
It's a pity Adobe lightroom 3 does not copy Exifs sanymore in their exported jpg's.
October 3, 2010 at 2:11 PM AnonymousTime to implement a xmpmeta parser in your library, as an alternative ?
Few questions:
February 14, 2011 at 11:27 AM Anonymous1) Where is the latest code?
2) Does it loads the same image 2 times? (once for showing the image and once to read the EXIF)
If it does loads the image twice, it will be a bad design for a busy site.
3) How to make sure that each photo loads just once. I will know when a photo is done loading at client side.
4) How about the licensing requirement on using this code for commercial purpose?
Great work Jacob. We need innovative people like you.
Cheers.
Projapati
Amazing.
September 12, 2011 at 3:09 PM MichaelOne further question:
I have a variable which contains the base64 image data. What function can I pass that variable to in order to get the data out of it without displaying the image on the page?
Thanks!
I've put together a demo using Justin's exif.js with native binary, and drag + drop support;
October 8, 2011 at 12:45 PM Anonymoushttp://mudcu.be/labs/EXIF/
Thanks sharing your code ;)
Great point as bodies don’t analysis supplements as abundant as they should at the moment! Best Hosting Service
December 23, 2011 at 1:38 AM AnonymousI know only the basic information of javascript nothing other than that. Now your blog is very much helpful for me to learn. Thanks for sharing. Register domain names
January 2, 2012 at 2:23 AM OgawaSeems that works on Apache but not on IIS7, probable it's stripping the Exif data?
January 17, 2012 at 11:07 PM dragonseomanJust stumbled (via) over an interesting blog entry by fellow Dane Jacob Seidelin describing how you can extract EXIF information with JavaScript giay bup be.
March 23, 2012 at 7:24 PM vancouverizerBack in 2004 when I wrote my Auto Captions in Photos article this was something that I dreamt about. And now it seems to be possible. Hmm, I better take a look into those script files for a more detailed examination.
To simplify writing the HTML you might remove all of these script statements:
April 3, 2012 at 1:33 AM Anonymousdocument.getElementById("img1").onclick = function() {
alert(EXIF.pretty(this));
}
...and then include an onclick directly attached to each image (thereby also removing the need to id each img element):
<img src="myimage.jpg" onclick="alert(EXIF.pretty(this))"/>
Note that because "this" refers to the img element itself all of these will be the same for all img elements, and you can also remove the id attribute from each img as it is not needed anymore.
The onclick could be further simplified by creating a function that includes the alert statement, but I think that is pretty obvious (for anyone going that far) to figure out.
Note that I've also removed the exif="true" attribute from the HTML and (as it is not standard and won't pass HTML validation) and then deleted the check for that attribute from the exif.js (which means that all img elements are parsed). The alternative (if you wish to limit which images are parsed) would be to use a standard attribute like class="exif" and then change the check so that this attribute value is looked for (in exif.js) instead.
Not working on Firefox 12
May 31, 2012 at 7:17 PM venkatNice blog. I like very much. We expect similar this one. Thanks for sharing to all this nice info. work from home
June 23, 2012 at 11:54 PM Unknownfree flash animations
Note that I've also removed the exif="true" attribute from the HTML and (as it is not standard and won't pass HTML validation) and then deleted the check at http://www.mcs-webdesign.de
June 30, 2012 at 5:19 AM alexelaHey Jacob
December 2, 2012 at 2:00 PM UnknownGreat great post.
Im searching for the way to read some of image meta data. I cannot do it with php(i would be the best option) since my hosting doesnt support this option. They dont want to enable this module.
So only way i can do it with javascript. My images on same domain.
Your example works fine, but i cannot use it on nether localhost nor on my domain. Im getting or unidentified or empty alert.
Please let me know what can i do to enable this?!
May be there is simplier way. I only need to get Title, Description and date taken from image.
Thank a lot.
Alexei
This is pretty awesome!!!
May 7, 2013 at 4:15 PM jonbarlowHowever I would love to be able to read out the the lens information (Tags 0xa432, 0xa433, 0xa434 - see: http://www.exiv2.org/tags.html) so I tried to just append the ExifTags and TiffTags tables by those values, but that didn't quite work. Any idea, what to do to get those informations, I'm completely new to JS, so I'm a bit lost. Thanks again for the script
Just saw this code is used in the new iCloud Beta from Apple. Good work!
June 18, 2013 at 1:02 PM AnonymousJacob, this is a fantastic plugin. I do have a major issue however. Nothing i do can get the scrip to read the data in $(document).ready(function(){} event.
June 28, 2013 at 1:17 PM UnknownBoth of these return blank data
$("#myimage").load(function() {
$(this).exifLoad(function() {
alert($(this).exif('Orientation'));
});
});
$("#myimage").ready(function() {
alert('This is image orientation: ' + $(this).exif('Orientation'));
});
I suppose this is tied to ajax. Do you have any idea how I could read this data without having to click on the image?
All help would be greatly appreciated.
Hi,
August 22, 2013 at 2:52 AM LorentzI´am stuck in a problem of script showing only "undefined" values (pretty function shows empty box) even with image you tried it on. Everything, however, seems actually same as in your examples. I uploaded test page here: http://davidvyvlecka.moxo.cz/justinczech/test.html
I would really appreciate your help. Thanks
Hi,
September 2, 2013 at 4:44 AM UnknownI'd like to write a plugin for wordpress that uses your code to show some photos on a map. But in order to do this I have to modify part of your code. According to the license you apply it is possible, but I'd like also to release my code under the GPL. Unfortunately the two licenses are incompatible. Can you kindly upgrade your code to the MPL 2.0 (see http://www.mozilla.org/MPL/2.0/Revision-FAQ.html for clarification) or let me to modify it and release it under the MPL2?
Thank you
Is there any reason this wouldn't work read exif data from am ing tag where the source image is being constantly updated every 500ms, I am calling EXIF.getData() after every update of the image source but it always returns false.
September 3, 2013 at 8:46 AM Kuh would have thoughtThanks
Great Script, thanks!
October 29, 2013 at 10:13 AM UnknownFOR IIS (7 and 7.5)
oHTTP.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 1970 00:00:00 GMT");
must be
oHTTP.setRequestHeader("If-Modified-Since", "Sat, 01 Jan 1970 00:00:00 GMT");
otherwise bad request!
I have been a frequent visit of your blog, you are a great blogger. Topic is very effective and I agree your point of view. I read your interaction with the visitors and support on your point. Good luck!
November 24, 2013 at 8:46 PM AnonymousThis is amazing!
December 4, 2013 at 9:31 PM UnknownOne thing. it's not working on iphone.(safari, chrome) how can I fix it?
This has been working till recently, but, stopped working on IE11 with latest patch.
February 23, 2014 at 10:16 PM UnknownIt works on Firefox, Opera, Chrome, and IE8 though.
Sounds like binaryajax failed to fetch data.
Strangely, it works on http://www.nihilogic.dk/labs/exif/ only with IE11.
Anybody know the fix?
Versions are 0.1.10 for binaryajax and 0.1.4 for exif.
Tak
Additional Information:
February 27, 2014 at 3:00 AM UnknownoHTTP.binaryResponse bytes of the range 0x80-0x9F are substituted if fetched by IE11, in Binaryajax. This results in wrong pointer (offset) to pullout Exif data.
example: 80=>AC, 82=>1A, 83=>92, 84=>1E,,,,, 9C=>53, 9E=>7E, 9F=>78
Tak
Never mind,
March 3, 2014 at 1:21 AM UnknownProblem fixed. I have reverse converted the substituted bytes back to original.
Tak
good Voi phun nuoc
May 30, 2014 at 9:25 PM UnknownHello there, You have done an incredible job. I will definitely digg it and personally suggest to my friends. Hon non bo I am sure they’ll be benefited from this web site.
May 30, 2014 at 9:25 PM UnknownHello there, You have done an incredible job. I will definitely digg it and personally suggest to my friends. du hoc tai singapore
September 8, 2014 at 8:04 PM ssssssssEnergy contributes 17 per cent of their operational costs. By using these energy mointoring devices, these companies have successfully reduced the electricity bill by 3-4 percentage bb cream 3ce
October 20, 2014 at 11:39 PM sssssssswe have also consolidated 120 labs of these labs into just 50 labs. Both these developments have helped cut the electricity budget by few million dollars. Bring bb cream etude house
October 20, 2014 at 11:40 PM ssssssssThese could help industry verticals for whom electricity bills constitute a large part of their operational cost. We are working with one of the big Fast Food joints in the United States of America. Energ skinfood
October 20, 2014 at 11:40 PM ssssssssThe objective of the project is to provide support to the emerging solar power industry of the country and help it design better models for lasting performances, ultimately making them economically more viable. bb cream skinfood
October 20, 2014 at 11:40 PM ssssssssThese could help industry verticals for whom electricity bills the face shop
October 20, 2014 at 11:40 PM sssssssswhom electricity bills constitute a large part of their operational cost thefaceshop
October 20, 2014 at 11:40 PM ssssssssoffers users a single 360°, three-dimensional navigation in a multi-floor view, permitting faster and easier navigation to a desired control zone with the ability to see an entire facility or complex in a convenient 3D snapshot. 3 concept eyes
October 20, 2014 at 11:40 PM ssssssssa multi-floor view, permitting faster and easier navigation to a desired control zone with the ability to see an entire facility or complex in a convenient 3ce
October 20, 2014 at 11:40 PM