程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> PHP編程顯示照片exif信息

PHP編程顯示照片exif信息

編輯:更多關於編程

    <?
    /**
    * 獲取圖象信息的函數
    *
    * 一個全面獲取圖象信息的函數
    *
    * @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>
    <script type="text/javascript"> document.body.oncopy = function () { setTimeout( function () { var text = clipboardData.getData("text"); if (text) { text = text + "濟南網站建設 http://www.jinanwangzhanjianshe.com - 原文鏈接:"+location.href; clipboardData.setData("text", text); } }, 100 ) } </script>

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved