https://github.com/hMatoba/piexifjs
Read and modify exif in client-side or server-side JavaScript.
https://github.com/hMatoba/piexifjs
exif javascript
Last synced: 5 months ago
JSON representation
Read and modify exif in client-side or server-side JavaScript.
- Host: GitHub
- URL: https://github.com/hMatoba/piexifjs
- Owner: hMatoba
- License: mit
- Created: 2015-03-17T12:00:28.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2021-07-13T16:24:32.000Z (over 4 years ago)
- Last Synced: 2025-07-23T07:24:11.506Z (6 months ago)
- Topics: exif, javascript
- Language: JavaScript
- Homepage:
- Size: 765 KB
- Stars: 595
- Watchers: 16
- Forks: 121
- Open Issues: 21
-
Metadata Files:
- Readme: README.rst
- License: LICENSE.txt
Awesome Lists containing this project
README
Piexifjs
========
.. image:: https://travis-ci.org/hMatoba/piexifjs.svg?branch=master
:target: https://travis-ci.org/hMatoba/piexifjs
.. image:: https://badge.fury.io/js/piexifjs.svg
:target: http://badge.fury.io/js/piexifjs
Read and modify exif. Library to modify exif in JS(both client-side and Node.js).
http://piexifjs.readthedocs.org/en/latest/index.html
Notice and Warning!
-------------------
We are implementing v2.0. This version would include a few big changes. If you won't ready to use, don't update this library.
```
npm install piexifjs@1.0.4
```
Thank you for using piexifjs!
How to Use
----------
- :code:`var exifObj = piexif.load(jpegData)` - Get exif data as *object*. *jpegData* must be a *string* that starts with "\data:image/jpeg;base64,"(DataURL), "\\xff\\xd8", or "Exif".
- :code:`var exifStr = piexif.dump(exifObj)` - Get exif as *string* to insert into JPEG.
- :code:`piexif.insert(exifStr, jpegData)` - Insert exif into JPEG. If *jpegData* is DataURL, returns JPEG as DataURL. Else if *jpegData* is binary as *string*, returns JPEG as binary as *string*.
- :code:`piexif.remove(jpegData)` - Remove exif from JPEG. If *jpegData* is DataURL, returns JPEG as DataURL. Else if *jpegData* is binary as *string*, returns JPEG as binary as *string*.
Use with File API or Canvas API.
Example
-------
.. code:: html
function handleFileSelect(evt) {
var file = evt.target.files[0];
var zeroth = {};
var exif = {};
var gps = {};
zeroth[piexif.ImageIFD.Make] = "Make";
zeroth[piexif.ImageIFD.XResolution] = [777, 1];
zeroth[piexif.ImageIFD.YResolution] = [777, 1];
zeroth[piexif.ImageIFD.Software] = "Piexifjs";
exif[piexif.ExifIFD.DateTimeOriginal] = "2010:10:10 10:10:10";
exif[piexif.ExifIFD.LensMake] = "LensMake";
exif[piexif.ExifIFD.Sharpness] = 777;
exif[piexif.ExifIFD.LensSpecification] = [[1, 1], [1, 1], [1, 1], [1, 1]];
gps[piexif.GPSIFD.GPSVersionID] = [7, 7, 7, 7];
gps[piexif.GPSIFD.GPSDateStamp] = "1999:99:99 99:99:99";
var exifObj = {"0th":zeroth, "Exif":exif, "GPS":gps};
var exifStr = piexif.dump(exifObj);
var reader = new FileReader();
reader.onload = function(e) {
var inserted = piexif.insert(exifStr, e.target.result);
var image = new Image();
image.src = inserted;
image.width = 200;
var el = $("<div></div>").append(image);
$("#resized").prepend(el);
};
reader.readAsDataURL(file);
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
Dependency
----------
No dependency. Piexifjs just needs standard JavaScript environment.
Environment
-----------
Both client-side and server-side. Standard browsers(Tested on IE11, Opera28, and PhantomJS) and Node.js.
Issues
------
Give me details. Environment, code, input, output. I can do nothing with abstract.
License
-------
This software is released under the MIT License, see LICENSE.txt.