PHP整理显示照片exif信息

<?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(intel byte order) " , " TIFF(motorola byte order) " , " JPC " , " JP2 " , " JPX " , " JB2 " , " SWC " , " IFF " , " WBMP " , " XBM " ) ;
    
$Orientation = array ( "" , " top left side " , " top right side " , " bottom right side " , " bottom left side " , " left side top " , " right side top " , " right side bottom " , " left side bottom " ) ;
    
$ResolutionUnit = array ( "" , "" , " 英寸 " , " 厘米 " ) ;
    
$YCbCrPositioning = array ( "" , " the center of pixel array " , " the datum point " ) ;
    
$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 " => " flash did not fire " ,
    
" 1 " => " flash fired " ,
    
" 5 " => " flash fired but strobe return light not detected " ,
    
" 7 " => " flash fired and strobe return light detected " ,
    
) ;
    
    
$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-d H: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 ] ,
    
/*
    The actual aperture value of lens when the image was taken.
    Unit is APEX.
    To convert this value to ordinary F-number(F-stop),
    calculate this value's power of root 2 (=1.4142).
    For example, if the ApertureValue is '5', F-number is pow(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 ]] ,
    
/*
    Brightness of taken subject, unit is APEX. To calculate Exposure(Ev) from BrigtnessValue(Bv), you must add SensitivityValue(Sv).
    Ev=Bv+Sv Sv=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 " ,
    
/*
    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 .= " <TABLE> " ;
 
foreach ( $exif as $name => $val ) {
    
$innerhtml .= " <TR><TD> {$name}</TD><TD>{$val} </TD></TR> " ;
}
 
$innerhtml .= " <TR><TD colspan= /" 2 /" > " ;
if ( $_GET [ ' img ' ]) {
    
$image = exif_thumbnail ( $_GET [ ' img ' ]) ;
} else {
    
$image = false ;
}
if ( $image !== false ) {
    
$innerhtml .= " <img src= /" thumbnail.php?img= " . $_GET [ ' img ' ] . " /" > " ;
} else {
    
// no thumbnail available, handle the error here
    
$innerhtml .= " No thumbnail available " ;
}
 
$innerhtml .= " </TD></TR></TABLE> " ;
?>
<html>
<head>
<title>图片信息</title>
<meta http-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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值