整理显示照片exif信息冬冬(不断更新内容)

中文方式显示照片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", "NG", "SWF", "SD", "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>
[/PHP]
"照片EXIF信息"不明白,没有接触过.
记得以前的 www.phpe.net 有这样的PHP程序 怎么只有ASP的呢
不能吧,之前我在这里贴有灭有相关的已有的东西,有人说要,没人说有

寒啊,原来google搜索exif php的时候选择中文,想先看看中文有没有好的,结果真是倒霉啊,没什么好的内容,刚才搜了一下英文的....

我还当我做汉化吧》。。


我就想这玩意怎么会没人整理呢,不顾phpe.net里面没看到过,搜索好像也坏掉了
http://photo.newgx.com.cn/exif2/getphotoinfo.php?img=test.JPG

为什么有些信息读不出来呢?
可是我用其它函数缺能读出来.
这个好,我想移植到Discuz论坛上怎么弄呢?
收藏了先
Cougar网站@银河双子星→http://www.sbysky.com