PHP实现显示照片exif信息的方法
PHP编程可实现显示照片EXIF信息,显示图片中缩略图效果,其代码如下:
<? /** *获取图象信息的函数 *一个全面获取图象信息的函数 *@accesspublic *@paramstring$img图片路径 *@returnarray */ functionGetImageInfoVal($ImageInfo,$val_arr){ $InfoVal="未知"; foreach($val_arras$name=>$val){ if($name==$ImageInfo){ $InfoVal=&$val; break; } } return$InfoVal; } functionGetImageInfo($img){ $imgtype=array("","GIF","JPG","PNG","SWF","PSD","BMP","TIFF(intelbyteorder)","TIFF(motorolabyteorder)","JPC","JP2","JPX","JB2","SWC","IFF","WBMP","XBM"); $Orientation=array("","topleftside","toprightside","bottomrightside","bottomleftside","leftsidetop","rightsidetop","rightsidebottom","leftsidebottom"); $ResolutionUnit=array("","","英寸","厘米"); $YCbCrPositioning=array("","thecenterofpixelarray","thedatumpoint"); $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"=>"flashdidnotfire", "1"=>"flashfired", "5"=>"flashfiredbutstrobereturnlightnotdetected", "7"=>"flashfiredandstrobereturnlightdetected", ); $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[FILE][FileType]], "文件格式"=>$exif[FILE][MimeType], "文件大小"=>$exif[FILE][FileSize], "时间戳"=>date("Y-m-dH:i:s",$exif[FILE][FileDateTime]), "图像信息"=>"-----------------------------", "图片说明"=>$exif[IFD0][ImageDescription], "制造商"=>$exif[IFD0][Make], "型号"=>$exif[IFD0][Model], "方向"=>$Orientation[$exif[IFD0][Orientation]], "水平分辨率"=>$exif[IFD0][XResolution].$ResolutionUnit[$exif[IFD0][ResolutionUnit]], "垂直分辨率"=>$exif[IFD0][YResolution].$ResolutionUnit[$exif[IFD0][ResolutionUnit]], "创建软件"=>$exif[IFD0][Software], "修改时间"=>$exif[IFD0][DateTime], "作者"=>$exif[IFD0][Artist], "YCbCr位置控制"=>$YCbCrPositioning[$exif[IFD0][YCbCrPositioning]], "版权"=>$exif[IFD0][Copyright], "摄影版权"=>$exif[COMPUTED][Copyright.Photographer], "编辑版权"=>$exif[COMPUTED][Copyright.Editor], "拍摄信息"=>"-----------------------------", "Exif版本"=>$exif[EXIF][ExifVersion], "FlashPix版本"=>"Ver.".number_format($exif[EXIF][FlashPixVersion]/100,2), "拍摄时间"=>$exif[EXIF][DateTimeOriginal], "数字化时间"=>$exif[EXIF][DateTimeDigitized], "拍摄分辨率高"=>$exif[COMPUTED][Height], "拍摄分辨率宽"=>$exif[COMPUTED][Width], /* Theactualaperturevalueoflenswhentheimagewastaken. UnitisAPEX. ToconvertthisvaluetoordinaryF-number(F-stop), calculatethisvalue'spowerofroot2(=1.4142). Forexample,iftheApertureValueis'5',F-numberispow(1.41425,5)=F5.6. */ "光圈"=>$exif[EXIF][ApertureValue], "快门速度"=>$exif[EXIF][ShutterSpeedValue], "快门光圈"=>$exif[COMPUTED][ApertureFNumber], "最大光圈值"=>"F".$exif[EXIF][MaxApertureValue], "曝光时间"=>$exif[EXIF][ExposureTime], "F-Number"=>$exif[EXIF][FNumber], "测光模式"=>GetImageInfoVal($exif[EXIF][MeteringMode],$MeteringMode_arr), "光源"=>GetImageInfoVal($exif[EXIF][LightSource],$Lightsource_arr), "闪光灯"=>GetImageInfoVal($exif[EXIF][Flash],$Flash_arr), "曝光模式"=>($exif[EXIF][ExposureMode]==1?"手动":"自动"), "白平衡"=>($exif[EXIF][WhiteBalance]==1?"手动":"自动"), "曝光程序"=>$ExposureProgram[$exif[EXIF][ExposureProgram]], /* Brightnessoftakensubject,unitisAPEX.TocalculateExposure(Ev)fromBrigtnessValue(Bv),youmustaddSensitivityValue(Sv). Ev=Bv+SvSv=log((ISOSpeedRating/3.125),2) ISO100:Sv=5,ISO200:Sv=6,ISO400:Sv=7,ISO125:Sv=5.32. */ "曝光补偿"=>$exif[EXIF][ExposureBiasValue]."EV", "ISO感光度"=>$exif[EXIF][ISOSpeedRatings], "分量配置"=>(bin2hex($exif[EXIF][ComponentsConfiguration])=="01020300"?"YCbCr":"RGB"),//'0x04,0x05,0x06,0x00'="RGB"'0x01,0x02,0x03,0x00'="YCbCr" "图像压缩率"=>$exif[EXIF][CompressedBitsPerPixel]."Bits/Pixel", "对焦距离"=>$exif[COMPUTED][FocusDistance]."m", "焦距"=>$exif[EXIF][FocalLength]."mm", "等价35mm焦距"=>$exif[EXIF][FocalLengthIn35mmFilm]."mm", /* Storesusercomment.Thistagallowstousetwo-bytecharactercodeorunicode.First8bytesdescribethecharactercode.'JIS'isaJapanesecharactercode(knownasKanji). '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?"digitalstillcamera":"unknown"), "场景类型"=>(bin2hex($exif[EXIF][SceneType])==0x01?"Adirectlyphotographedimage":"unknown"), "缩略图文件格式"=>$exif[COMPUTED][Thumbnail.FileType], "缩略图Mime格式"=>$exif[COMPUTED][Thumbnail.MimeType] ); } return$new_img_info; } $innerhtml=""; $exif=GetImageInfo($_GET['img']); $innerhtml.="<TABLE>"; foreach($exifas$name=>$val){ $innerhtml.="<TR><TD>{$name}</TD><TD>{$val}</TD></TR>"; } $innerhtml.="<TR><TDcolspan=\"2\">"; if($_GET['img']){ $image=exif_thumbnail($_GET['img']); }else{ $image=false; } if($image!==false){ $innerhtml.="<imgsrc=\"thumbnail.php?img=".$_GET['img']."\">"; }else{ //nothumbnailavailable,handletheerrorhere $innerhtml.="Nothumbnailavailable"; } $innerhtml.="</TD></TR></TABLE>"; ?> <html> <head> <title>图片信息</title> <metahttp-equiv="Content-Type"content="text/html;charset=??????"> </head> <body> <SCRIPT> <!-- //初始化内容值 parent.followTd<?=$_GET['r_id'];?>.innerHTML='<?=$innerhtml;?>'; //已读取 parent.document.images.followImg<?=$_GET['r_id'];?>.loaded='yes'; --> </SCRIPT> </body> </html>