Windows users: If you get the fatal error "Fatal error: Call to undefined function exif_imagetype()", and you have enabled php_exif.dll, make sure you enable php_mbstring.dll. You must put mbstring before exif in the php.ini, i.e.:
extension=php_mbstring.dll
extension=php_exif.dll
You can check whether this has worked by calling phpinfo() and searching for exif.
exif_imagetype
(PHP 4 >= 4.3.0, PHP 5)
exif_imagetype — Ermittelt den Bildtyp
Beschreibung
$filename
)exif_imagetype() liest die ersten bytes des Bildes aus und überprüft dessen Signatur.
exif_imagetype() kann benutzt werden, um Aufrufe anderer exif-Funktionen bei nicht unterstützten Dateitypen zu vermeiden. Es kann auch in Verbindung mit $_SERVER['HTTP_ACCEPT'] dazu verwendet werden, ob der Betrachter ein bestimmtes Bild in seinem Browser sehen kann oder nicht.
Parameter-Liste
-
filename - Das zu überprüfende Bild.
Rückgabewerte
Bei einer richtigen Signatur wird die entsprechende Konstante als Wert
zurückgegeben, andernfalls FALSE. Der Rückgabewert ist derselbe, der
auch von getimagesize() als Index 2 zurückgegeben wird,
nur ist exif_imagetype() deutlich schneller.
Changelog
| Version | Beschreibung |
|---|---|
| 5.3.0 | Unterstützung für ICO hinzugefügt. |
| 4.3.2 | Unterstützung für JPC, JP2, JPX, JB2, XBM und WBMP |
| 4.3.0 | Unterstützung für SWC |
Vordefinierte Konstanten
Die folgenden Konstanten sind definiert und repräsentieren die möglichen Rückgabewerte von exif_imagetype():
| Wert | Konstante |
|---|---|
| 1 | IMAGETYPE_GIF |
| 2 | IMAGETYPE_JPEG |
| 3 | IMAGETYPE_PNG |
| 4 | IMAGETYPE_SWF |
| 5 | IMAGETYPE_PSD |
| 6 | IMAGETYPE_BMP |
| 7 | IMAGETYPE_TIFF_II (intel-Bytefolge) |
| 8 |
IMAGETYPE_TIFF_MM (motorola-Bytefolge)
|
| 9 | IMAGETYPE_JPC |
| 10 | IMAGETYPE_JP2 |
| 11 | IMAGETYPE_JPX |
| 12 | IMAGETYPE_JB2 |
| 13 | IMAGETYPE_SWC |
| 14 | IMAGETYPE_IFF |
| 15 | IMAGETYPE_WBMP |
| 16 | IMAGETYPE_XBM |
| 17 | IMAGETYPE_ICO |
Beispiele
Beispiel #1 exif_imagetype()-Beispiel
<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo 'Das Bild ist kein gif';
}
?>
Siehe auch
- image_type_to_mime_type() - Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
- getimagesize() - Ermittelt die Größe einer Grafik
If the function exif_imagetype() is not available,
you can try the following workaround:
if ( ! function_exists( 'exif_imagetype' ) ) {
function exif_imagetype ( $filename ) {
if ( ( list($width, $height, $type, $attr) = getimagesize( $filename ) ) !== false ) {
return $type;
}
return false;
}
}
By trial and error, it seems that a file has to be 12 bytes or larger in order to avoid a "Read error!". Here's a work-around to avoid an error being thrown:
// exif_imagetype throws "Read error!" if file is too small
if (filesize($uploadfile) > 11)
$mimetype = exif_imagetype($uploadfile);
else
$mimetype = false;
Seems to give a 'Read error' warning if the size of the file is very small (2 bytes). I think this is because it needs a min 3 bytes to determine the file type
libexif can also be used to parse image info out of id3 tags:
exif_read_data("mp3_with_2.4ID3TAGS, '', true, false);
After looking for hours, I found a very good source for exif related programs here: http://drewnoakes.com/code/exif/index.html
It lists exif specifications (pdf), a few good links to exif related stuff. The best source I have found in my quest to understand exif better for use in php based exif tools.
