当前位置: 首页 > 图文教程 > 网络编程 > PHP > 显示照片exif信息PHP代码

PHP
php面向对象全攻略 (十五) 多态的应用
php面向对象全攻略 (十六) 对象的串行化
php面向对象全攻略 (十七) 自动加载类
PHP parse_url 一个好用的函数
PHP 字符串分割和比较
全世界最小的php网页木马一枚 附PHP木马的防范方法
PHP 日期加减的类,很不错
PHP 日期时间函数的高级应用技巧
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Ha0k 0.3 PHP 网页木马修改版
PHP iconv 函数转gb2312的bug解决方法
关于页面优化和伪静态
使用zend studio for eclipse不能激活代码提示功能的解决办法
PHP 身份验证方面的函数
基于OpenCV的PHP图像人脸识别技术
用mysql触发器自动更新memcache的实现代码
php 数学运算验证码实现代码
PHP网站开发方案实例
PHP教程:挖掘细节提升网站性能
搜索引擎技术核心揭密(PHP)

显示照片exif信息PHP代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 156 ::
收藏到网摘: n/a

中文方式显示照片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(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>