返回的信息见图片:
代码如下:
<?php /** * FILE_NAME : Image.php * 图片处理类 * * @package haohailuo * @author By Laurence.xu <[email]haohailuo@163.com[/email]> * @copyright Copyright (c) 2010, Haohailuo, Inc. * @link [url]http://www.haohailuo.com[/url] * @since Version 1.0 $Id$ * @version Thu Jan 27 21:19:53 CST 2010 * @filesource */ class Image { var $imgtype = array(); //图片类型 var $orientation = array(); //位置信息 var $resolution_unit = array(); //分辨率单位 var $ycb_cr_positioning = array(); //YCbCr位置控制 var $exposure_program = array(); //曝光 var $metering_mode_arr = array(); //测光模式 var $lightsource_arr = array(); //光源信息 var $flash_arr = array(); //闪光灯 /** * 构造函数 * */ function __construct(){ $this->Image(); } function Image() { $this->imgtype = array("", "GIF", "JPG", "PNG", "SWF", "PSD", "BMP", "TIFF(intel byte order)", "TIFF(motorola byte order)", "JPC", "JP2", "JPX", "JB2", "SWC", "IFF", "WBMP", "XBM"); $this->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"); $this->resolution_unit = array("", "", "英寸", "厘米"); $this->ycb_cr_positioning = array("", "the center of pixel array", "the datum point"); $this->exposure_program = array("未定义", "手动", "标准程序", "光圈先决", "快门先决", "景深先决", "运动模式", "肖像模式", "风景模式"); $this->metering_mode_arr = array("0" => "未知","1" => "平均", "2" => "中央重点平均测光", "3" => "点测","4" => "分区","5" => "评估","6" => "局部","255" => "其他"); $this->lightsource_arr = array("0" => "未知","1" => "日光","2" => "荧光灯","3" => "钨丝灯","10" => "闪光灯","17" => "标准灯光A","18" => "标准灯光B","19" => "标准灯光C","20" => "D55","21" => "D65","22" => "D75","255" => "其他"); $this->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", ); log_message('debug', "The Extend Image Class Initialized"); } /** * 一个全面获取图象信息的函数 * * @see get_img_info() * @author Laurence.xu <[email]haohailuo@163.com[/email]> * @version Thu May 27 21:26:36 CST 2010 * @param <string> $image 图片路径 * @return <array> $info 图片信息数组 */ function get_img_info($image) { $exif = exif_read_data($image, "IFD0"); if ($exif === false) { $new_img_info = array ("文件信息" => "没有图片EXIF信息"); } else { $exif = exif_read_data ($image, 0, true); $new_img_info = array ( "文件信息" => "----------------------------", "文件名" => $exif['FILE']['FileName'], "文件类型" => $this->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'], "方向" => $this->orientation[$exif['IFD0']['Orientation']], "水平分辨率" => $exif['IFD0']['XResolution'].$this->resolution_unit[$exif['IFD0']['ResolutionUnit']], "垂直分辨率" => $exif['IFD0']['YResolution'].$this->resolution_unit[$exif['IFD0']['ResolutionUnit']], "创建软件" => $exif['IFD0']['Software'], "修改时间" => $exif['IFD0']['DateTime'], "作者" => $exif['IFD0']['Artist'], "YCbCr位置控制" => $this->ycb_cr_positioning[$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'], "测光模式" => $this->_get_img_info_val($exif['EXIF']['MeteringMode'],$this->metering_mode_arr), "光源" => $this->_get_img_info_val($exif['EXIF']['LightSource'], $this->lightsource_arr), "闪光灯" => $this->_get_img_info_val($exif['EXIF']['Flash'], $this->flash_arr), "曝光模式" => ($exif['EXIF']['ExposureMode'] == 1 ? "手动" : "自动"), "白平衡" => ($exif['EXIF']['WhiteBalance'] == 1 ? "手动" : "自动"), "曝光程序" => $this->exposure_program[$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; } /** * 获取图象信息的函数 * * @see getImageInfo() * @author Laurence.xu <[email]haohailuo@163.com[/email]> * @version Thu May 27 21:22:43 CST 2010 * @param <string> $img_info 图片信息 * @param <array> $val_arr 值 * @return <string> $info_val */ function _get_img_info_val($img_info, $val_arr) { $info_val = "未知"; foreach($val_arr as $name=>$val) { if ($name == $img_info) { $info_val =& $val; break; } } return $info_val; } } /* End of file Image.php */ /* Location: ./www/libraries/Image.php */ 附件下载: Image.rar
评论