|
exif_read_data
Reads the EXIF headers from JPEG or TIFF
(PHP 4 >= 4.2.0, PHP 5)
exif_read_data() reads the EXIF headers from a JPEG or TIFF image file. This way you can read meta data generated by digital cameras. Exif headers tend to be present in JPEG/TIFF images generated by digital cameras, but unfortunately each digital camera maker has a different idea of how to actually tag their images, so you can't always rely on a specific Exif header being present.
When an Exif header contains a Copyright note, this itself can contain two
values. As the solution is inconsistent in the Exif 2.10 standard, the COMPUTED
section will return both entries
The tag UserComment has the same problem as the Copyright tag. It can store
two values. First the encoding used, and second the value itself. If so the
IFD section only contains the encoding or a byte array. The COMPUTED section
will store both in the entries exif_read_data() also validates EXIF data tags according to the EXIF specification (» http://exif.org/Exif2-2.PDF, page 20).
Note:
Windows ME/XP can both wipe the Exif headers when connecting to a camera. More information available at » http://www.canon.co.jp/imaging/notice/011214-e.php. Parameters
Return Values
It returns an associative array where the array indexes are
the header names and the array values are the values associated with
those headers. If no data can be returned,
exif_read_data() will return ChangeLog
ExamplesExample 600. exif_read_data() example<?php The first call fails because the image has no header information. The above example will output something similar to: test1.jpg:
See Also
Code Examples / Notes » exif_read_data05-mar-2007 07:50
When reading EXIF information from the 'WINXP' group, you may need to change used encoding from the default "ISO-8859-15" to "UTF-8". This can be done in php.ini or in your code: <?php ini_set('exif.encode_unicode', 'UTF-8'); $exif = exif_read_data('TEST.JPG', 0, true); echo $exif['WINXP']['Title']; ?> Useful documentation about EXIF: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html See also comments next to XPTitle and XPAuthor. wdierkes
Using the exif methods to read WINXP data returns unexpected results unless both exif and mbstring are compiled statically. Please reference the following bug reports: Bug #31980 Bug #23105 Specifically, the last comment on #23105: "[8 Apr 2003 4:26pm UTC] edink@php.net This cannot be fixed due to the fact that mbstring has been removed from PHP core (it has been 'unbundled') and the rest of core files and other extensions cannot use mbstring functionality when it is compiled as a shared library (dll). " If exif is compiled statically (--enable-exif) and mbstring compiled as a DSO module (--enable-mbstring=shared) then exif_read_data may only return a single character rather than the entire string. Compiling both exif and mbstring statically (--enable-exif --enable-mbstring) resolves the issue. mafo
some cameras (most higher models) have position senzor (gyroskope?) and taking-position is wrote in EXIF, here is simple script for automatic rotating images <?php $exif = exif_read_data($filename); $ort = $exif['IFD0']['Orientation']; switch($ort) { case 1: // nothing break; case 2: // horizontal flip $image->flipImage($public,1); break; case 3: // 180 rotate left $image->rotateImage($public,180); break; case 4: // vertical flip $image->flipImage($public,2); break; case 5: // vertical flip + 90 rotate right $image->flipImage($public, 2); $image->rotateImage($public, -90); break; case 6: // 90 rotate right $image->rotateImage($public, -90); break; case 7: // horizontal flip + 90 rotate right $image->flipImage($public,1); $image->rotateImage($public, -90); break; case 8: // 90 rotate left $image->rotateImage($public, 90); break; } ?> $image->rotateImage() is inspired by example of http://php.net/manual/en/function.imagerotate.php $image->flipImage() is inspired by http://php.net/manual/en/function.imagecopy.php#42803 (thank you) gimpster
I've written a library in pure PHP5 for editing EXIF tags. It deals with both reading and writing EXIF tags, and can be downloaded from http://pel.sourceforge.net/
09-aug-2004 06:11
I've just released the "PHP JPEG Metadata Toolkit" which allows reading, writing and displaying of EXIF information, and does not need the --enable-exif option in PHP4. It has been tested on 466 different models of digital cameras! It can decode the following EXIF makernotes: Agfa, Canon, Casio, Contax, Epson, Fujifilm, Konica, Minolta, Kyocera, Nikon, Olympus, Panasonic, Pentax (Asahi), Ricoh and Sony Additionaly it can decode IPTC, XMP, Photoshop IRB and many other types of JPEG metadata Try it out, and download it at: http://www.ozhiker.com/electronics/pjmt/index.html pekka
For reading EXIF from XMP data embedded by Adobe Photoshop CS, see http://www.photography-on-the.net/ee/beta/cs_xmp_to_exif.php
noway
Exif is very unstable under php4.1.2 If you have some problem, (the function didnt return anything, like a blocking call) try this: $file = './image.jpg'; getimagesize ( $file , $info); $exif = array(); if (isset($info)) { foreach($info as $key => $val) { if ($key != 'APP1') { $exif = read_exif_data($file); break; } } } -- Sharp |