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;
}
}
exif_imagetype
(PHP 4 >= 4.3.0, PHP 5)
exif_imagetype — イメージの型を定義する
説明
int exif_imagetype
( string $filename
)
exif_imagetype() を画像の先頭バイトを読み そのサインを調べます。
exif_imagetype() は、他の exif 関数がサポートしていないファイル形式で コールされるの防いだり、$_SERVER['HTTP_ACCEPT'] と組み合わせて閲覧者が画像を見る権限を持っているかどうかを調べたりするために 使用可能です。
パラメータ
- filename
- 調べる画像。
返り値
正しいサインが見つかった場合は適切な定数、それ以外の場合は FALSE を返します。返り値は getimagesize() がインデックス 2 に対して返す値と同じですが、exif_imagetype() のほうがずっと早く動作します。
変更履歴
| バージョン | 説明 |
|---|---|
| 4.3.2 | JPC、JP2、 JPX、JB2、 XBM および WBMP がサポートされます。 |
| 4.3.0 | SWC がサポートされます。 |
定義済み定数
以下の定数が定義されており、exif_imagetype() の返り値を表しています。
| 値 | 定数 |
|---|---|
| 1 | IMAGETYPE_GIF |
| 2 | IMAGETYPE_JPEG |
| 3 | IMAGETYPE_PNG |
| 4 | IMAGETYPE_SWF |
| 5 | IMAGETYPE_PSD |
| 6 | IMAGETYPE_BMP |
| 7 | IMAGETYPE_TIFF_II (intel byte order) |
| 8 | IMAGETYPE_TIFF_MM (motorola byte order) |
| 9 | IMAGETYPE_JPC |
| 10 | IMAGETYPE_JP2 |
| 11 | IMAGETYPE_JPX |
| 12 | IMAGETYPE_JB2 |
| 13 | IMAGETYPE_SWC |
| 14 | IMAGETYPE_IFF |
| 15 | IMAGETYPE_WBMP |
| 16 | IMAGETYPE_XBM |
例
例1 exif_imagetype() の例
<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo 'The picture is not a gif';
}
?>
exif_imagetype
tom dot ghyselinck at telenet dot be
13-Jan-2008 10:36
13-Jan-2008 10:36
Tim
19-Nov-2007 05:40
19-Nov-2007 05:40
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;
10-Nov-2006 01:43
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
tom at tomvergote dot be
07-Feb-2004 11:11
07-Feb-2004 11:11
libexif can also be used to parse image info out of id3 tags:
exif_read_data("mp3_with_2.4ID3TAGS, '', true, false);
tilmauder at yahoo dot com
06-Jul-2003 01:57
06-Jul-2003 01:57
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.
