ホームページ >php教程 >php手册 >写真のexif情報を表示するPHPコード

写真のexif情報を表示するPHPコード

WBOY
WBOYオリジナル
2016-06-21 08:59:44971ブラウズ
中文方式显示照片EXIF信息,显示图片中所略图

这东西除了一些php论坛简单显示三两信息,别人的lb5000论坛上看到过显示,asp的也有不过很久没接触看着晕。

不想重复劳动,搜过google,除了asp没找到其他开源的显示exif的,所以整理出来或许有用。

没什么技术含量,基本只是汉化和资料整理的工作,以下代码为主要部分,所有文件在压缩包内,可以广泛用于相册和论坛显示图片信息的插件,希望熟悉相关知识的朋友找找bug或者加以优化。

目前应该缺不少信息,如果单单使用应该足够了。

——————————————————
看到过别人传过来的照片里面有缩略图,photoshop做的,但是不知道怎么加进去,有人知道么

缩略图可以显示:)


PHP代码:--------------------------------------------------------------------------------

/**
* 获取图象信息的函数
*
* 一个全面获取图象信息的函数
*
* @access public
* @param string $img 图片路径
* @return array
*/
function GetImageInfoVal($ImageInfo,$val_arr) {
$InfoVal = "未知";
foreach($val_arr as $name=>$val) {
        if ($name==$ImageInfo) {
            $InfoVal    =    &$val;
            break;
        }
    }
    return $InfoVal;
}
function GetImageInfo($img) {
   


$imgtype = array("", "GIF", "JPG", "PNG", "SWF", "PSD", "BMP", "TIFF(インテル バイト オーダー)", "TIFF(モトローラ バイト オーダー)", "JPC", "JP2", "JPX", "JB2", "SWC", "IFF", "WBMP", "XBM");
$Orientation = array("", "左上", "右上", "右下", "左下", "左上", "右側上", "右側下", "左側下");
$ResolutionUnit = array("", "", "inch", "cm");
$YCbCrPositioning = array("", "ピクセル配列の中心", "基準点");
$ExposureProgram = array("未定義", "マニュアル", "標準プログラム", "絞り優先", "シャッター優先", "被写界深度優先", "スポーツモード", "ポートレートモード", "風景モード" ) ;
$MeteringMode_arr = array(
"0" => "不明",
"1" => "平均",
"2" => "中央重点平均測光 "、
"3" => "スポットテスト"、
"4" => "パーティション"、
"5" => "評価"、
"6 " => "部分的",
"255" => "その他"
);
$Lightsource_arr = array(
"0" => "不明",
"1 " = > "太陽光"、
"2" => "蛍光灯"、
"3" "タングステン光"、
"10" => "フラッシュ"、
" 17" => "標準照明 A"、
"18" => "標準照明 B"、
"19" => "標準照明 C"、
"20" => ; "D55",
"21" => "D65",
"22" => "D75",
"255" => "その他"
);
$Flash_arr = array(
"0" => "フラッシュは発光しませんでした",
"1" => "フラッシュは発光しました",
"5" => "フラッシュは発光しましたが、ストロボは戻りました"光が検出されませんでした",
"7" => "フラッシュが発光し、ストロボの戻り光が検出されました",
);

$exif = exif_read_data ($img,"IFD0");
if ($exif===false) {
$new_img_info = array ("ファイル情報" => "画像 EXIF 情報なし");
}
else
{
$exif = exif_read_data ($img,0,true);
$new_img_info = array (
"ファイル情報" => "-------------- ---------------",
"ファイル名" => $exif[FILE][FileName],
"ファイルの種類" => $imgtype[$ exif [ファイル] [ファイルタイプ]],
"ファイル形式" = & gt; $ exif [ファイル] [mimetype],
ファイルサイズ "= & gt; $ exif [ファイル] [ファイルサイズ],
"タイムスタンプ" => date("Y-m-d H:i:s",$exif[FILE][FileDateTime]),
"画像情報" => ------------------",
"图片说明" => $exif[IFD0][ImageDescription],
"制造商" => $ exif[IFD0][Make],
「モデル」 「モデル」
"水平解像度" => $exif[IFD0][XResolution].$ResolutionUnit[$exif[IFD0][ResolutionUnit]],
"垂直解像度" => IFD0][著作権],
"写真の著作権" => $exif[COMPUTED][著作権.Photographer],
"編集上の著作権" => $exif[COMPUTED][著作権 .Editor],
「撮影情報」=>「----------------------------」、
「Exifバージョン」=> ; $exif[EXIF][ExifVersion],
"FlashPix バージョン" => "Ver. ".number_format($exif[EXIF][FlashPixVersion]/100,2),
"キャプチャ時間" => ; $exif[EXIF][DateTimeOriginal],
"デジタル時間" => $exif[EXIF][DateTimeDigitized],
"高解像度" => $exif[COMPUTED][高さ],
"高解像度" => $exif[COMPUTED][幅],
/*
撮影時のレンズの実際の絞り値
単位は APEX です。 🎜> たとえば、ApertureValue が '5' の場合、F 値は pow(1.41425,5) = F5.6 です。
*/
"Aperture" => $exif[EXIF][A pertureValue] ,
「シャッタースピード」 「最大絞り値」 => "F".$exif[EXIF][MaxApertureValue],
"Expo必ず時間;, EXIF][LightSource], $Lightsource_arr ),
"フラッシュ" => GetImageInfoVal($exif[EXIF][フラッシュ], $Flash_arr),
"露出モード" => ($exif[EXIF] [露出モード]==1?" マニュアル":"オート"),
"ホワイトバランス" => ($exif[EXIF][WhiteBalance]==1?"マニュアル":"オート"),
"露出プログラム" => $ ExposurePrograph [$ ExiF [ExiF] [ExposurePrograph]],
/*
露出 (EV) ESSVALUE (BV) を計算するには、単位は Apex です。 SensitivityValue (SV) を追加する必要があります。
Ev=Bv+Sv Sv=log((ISOSpeedRating/3.125),2)
ISO100:Sv=5、ISO200:Sv=6、ISO400:Sv=7、ISO125: Sv=5.32.
*** "数量" 構成" => (bin2hex($exif[EXIF][ComponentsConfiguration])=="01020300"?"YCbCr":"RGB"),//'0x04, 0x05,0x06,0x00'="RGB" '0x01, 0x02,0x03,0x00'="YCbCr"
"画像圧縮率" => $exif[EXIF][CompressedBitsPerPixel]."ビット/ピクセル",
            "对焦距离"        =>    $exif[COMPUTED][FocusDistance]."m",
            "焦距"            =>    $exif[EXIF][FocalLength]."mm",
            "等价35mm焦距"    =>    $exif[EXIF][FocalLengthIn35mmFilm]."mm",
            /*
            Stores user comment. This tag allows to use two-byte character code or unicode. First 8 bytes describe the character code. 'JIS' is a Japanese character code (known as Kanji).
            '0x41,0x53,0x43,0x49,0x49,0x00,0x00,0x00':ASCII
            '0x4a,0x49,0x53,0x00,0x00,0x00,0x00,0x00':JIS
            '0x55,0x4e,0x49,0x43,0x4f,0x44,0x45,0x00':Unicode
            '0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00':Undefined
            */
            "用户注释编码"    =>    $exif[COMPUTED][UserCommentEncoding],
            "用户注释"        =>    $exif[COMPUTED][UserComment],
            "色彩空间"        =>    ($exif[EXIF][ColorSpace]==1?"sRGB":"Uncalibrated"),
            "Exif图像宽度"    =>    $exif[EXIF][ExifImageLength],
            "Exif图像高度"    =>    $exif[EXIF][ExifImageWidth],
            "文件来源"        =>    (bin2hex($exif[EXIF][FileSource])==0x03?"digital still camera":"unknown"),
            "场景类型"        =>    (bin2hex($exif[EXIF][SceneType])==0x01?"A directly photographed image":"unknown"),
            "缩略图文件格式"    =>    $exif[COMPUTED][Thumbnail.FileType],
            "缩略图Mime格式"    =>    $exif[COMPUTED][Thumbnail.MimeType]
        );
    }
    return $new_img_info;
}

$innerhtml    =    "";
$exif    =    GetImageInfo($_GET['img']);
$innerhtml    .=    "

";

foreach($exif as $name=>$val) {
    $innerhtml    .=    "

";
}

$innerhtml    .=    "

{$name}{$val}
";
if ($_GET['img']) {
    $image = exif_thumbnail($_GET['img']);
} else {
    $image = false;
}
if ($image!==false) {
    $innerhtml    .=    "";
} else {
    // no thumbnail available, handle the error here
    $innerhtml    .=    "No thumbnail available";
}

$innerhtml .= "

";
?>


画像情報



<SCRIPT><br><!--<br/>//初期化内容值<br/>parent.followTd<?=$_GET['r_id' ];?>.innerHTML='<?=$innerhtml;?>';<br>//已读取<br>parent.document.images.followImg=$_GET['r_id']; ?>.loaded='yes';<br>--><br></SCRIPT>



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。