php取得ピクチャ完全Exif情報クラス取得ピクチャ詳細完全情報クラス

17483 ワード

まずExifとは何かを説明します.Exifは、JPEG形式とまったく同じデータストレージを持つ画像ファイル形式です.実際、Exif形式とは、撮影時の絞り、シャッター、ホワイトバランス、ISO、焦点距離、日時など、さまざまな撮影条件やカメラブランド、モデル、カラーコード、撮影時に録音された音声、グローバル測位システム(GPS)、サムネイルなど、JPEG形式の頭部にデジタル写真が挿入された情報である.簡単に言えば、Exif=JPEG+撮影パラメータです.そのため、JPEGファイルを表示できるグラフィックスソフトを利用してExif形式の写真を閲覧することができますが、すべてのグラフィックプログラムがExif情報を処理できるわけではありません.
  • PHPモジュール
  • を開く
    デフォルトでは、PHP読み出しピクチャExif情報モジュールはオンになっていません.まずこのモジュールをオンにする必要があります.
    Exifモジュールを開くにはmbstringのサポートが必要なので、mbstringをインストールし(ここではステップを省略し、サーバの環境に関係します)、exifモジュールをインストールします(ここではステップも省略し、サーバの環境に関係します).
    php.iniにモジュールを追加しphpを開く.ini次の2行を追加
    extension = "mbstring.so"extension = "exif.so"

    そしてextension_を確認するdir値は、モジュールのインストール時にプロンプトされたInstallingshared extensions値と一致し、phpを保存します.ini、webserverを再起動
        2.画像Exif情報の読み出し
    exif情報の読み取りをサポートするピクチャタイプはphpinfoに明記されており、jpegまたはtiffタイプのみで、jpegが一般的なタイプであれば十分です.
    'm pleased if you are willing to test my Image Exif class,if bug exists,you can leave a message. 
    **/  
      
    //error_reporting(0);                bug  
    header("content-type:text/html;charset=utf-8");   //   html        ,       
    class imgExif{  
        public $imgPath;  
        public $unitFlag;  
        public $imgInfoAll;  
        public $imgInfoAllCN;  
        public $imgInfoCommon;  
        public $imgInfoBrief;  
        public $imgInfoAllCNUnit;  
      
        /*    ,  exif mbstring      */  
        function __construct(){  
            extension_loaded('exif')&&extension_loaded('mbstring') or 
                die('exif module was not loaded,please check it in php.ini
    NOTICE:On Windows,php_mbstring.dll must be before php_exif.dll'); } /* , * , * * @param $imgPath( , ), , url。 * @param $MimeOrExifOrExtension( , ), Mime Exif 。 * 'Mime', Mime 。 * 'Exif', Exif 。 * 'Extension', 。 * , Mime 。 */ function getImgtype($imgPath,$MimeOrExifOrExtension = null){ $exifImgtype = array( 'IMAGETYPE_GIF' => 1, 'IMAGETYPE_JPEG' => 2, 'IMAGETYPE_PNG' => 3, 'IMAGETYPE_SWF' => 4, 'IMAGETYPE_PSD' => 5, 'IMAGETYPE_BMP' => 6, 'IMAGETYPE_TIFF_II' => 7, //(Intel ) 'IMAGETYPE_TIFF_MM' => 8, //(Motorola ) 'IMAGETYPE_JPC' => 9, 'IMAGETYPE_JP2' => 10, 'IMAGETYPE_JPX' => 11, 'IMAGETYPE_JB2' => 12, 'IMAGETYPE_SWC' => 13, 'IMAGETYPE_IFF' => 14, 'IMAGETYPE_WBMP' => 15, 'IMAGETYPE_XBM' => 16 ); $exifType = array_search(exif_imagetype($imgPath),$exifImgtype); $mimeType = image_type_to_mime_type(exif_imagetype($imgPath)); $extension = substr(image_type_to_extension(exif_imagetype($imgPath)),1); if($MimeOrExifOrExtension){ if($MimeOrExifOrExtension === 'Mime'){ return $mimeType; } elseif($MimeOrExifOrExtension === 'Exif'){ return $exifType; } elseif($MimeOrExifOrExtension === 'Extension'){ return $extension; } else{ return $mimeType; } } else{ return $mimeType; } } /* Exif */ function imgInfo(){ $imgPath = $this->imgPath; $imgInfoAll = exif_read_data($imgPath,0,1); foreach($imgInfoAll as $section => $arrValue){ foreach($arrValue as $key => $value){ $infoAllKey[] = $key; $infoAllValue[] = $value; } } $infoAll = array_combine($infoAllKey,$infoAllValue); $translate = array( 'FileName'=>' ', 'FileDateTime' => ' ', 'FileSize' => ' ', 'FileType' => 'Exif ', 'MimeType' => 'Mime ', 'SectionsFound' => ' Sections', 'html' => 'html ', 'Height' => ' ', 'Width' => ' ', 'IsColor' => ' ', 'ByteOrderMotorola' => ' Motorola ', 'ApertureFNumber' => ' ', 'Comments' => ' ', 'Author' => ' ', 'UserComment' => ' ', 'UserCommentEncoding' => ' ', 'Thumbnail.FileType' => ' Exif ', 'Thumbnail.MimeType' => ' Mime ', 'Make' => ' ', 'Model' => ' ', 'Orientation' => ' ', 'XResolution' => ' ', 'YResolution' => ' ', 'ResolutionUnit' => ' ', 'Software' => ' ', 'DateTime' => ' ', 'YCbCrPositioning' => 'YCbCr ', 'Exif_IFD_Pointer' => 'Exif IFD ', 'Compression' => ' ', 'JPEGInterchangeFormat' => 'JPEG SOI ', 'JPEGInterchangeFormatLength' => 'JPEG ', 'ExposureTime' => ' ', 'FNumber' => ' ', 'ExposureProgram' => ' ', 'ISOSpeedRatings' => 'ISO ', 'ExifVersion' => 'Exif ', 'DateTimeOriginal' => ' ', 'DateTimeDigitized' => ' ', 'ComponentsConfiguration' => ' ', 'CompressedBitsPerPixel' => ' ', 'ExposureBiasValue' => ' ', 'MaxApertureValue' => ' ', 'MeteringMode' => ' ', 'LightSource' => ' ', 'Flash' => ' ', 'FocalLength' => ' ', 'SubSecTime' => ' ', 'SubSecTimeOriginal' => ' ', 'SubSecTimeDigitized' => ' ', 'FlashPixVersion' => 'FlashPix ', 'ColorSpace' => ' ', 'ExifImageWidth' => 'Exif ', 'ExifImageLength' => 'EXif ', 'InteroperabilityOffset' => 'IFD ', 'SensingMethod' => ' ', 'FileSource' => ' ', 'SceneType' => ' ', 'CFAPattern' => ' ', 'CustomRendered' => ' ', 'ExposureMode' => ' ', 'WhiteBalance' => ' ', 'DigitalZoomRatio' => ' ', 'FocalLengthIn35mmFilm' => ' 35mm ', 'SceneCaptureType' => ' ', 'GainControl' => ' ', 'Contrast' => ' ', 'Saturation' => ' ', 'Sharpness' => ' ', 'SubjectDistanceRange' => ' ', 'InterOperabilityIndex' => 'InterOperability ', 'InterOperabilityVersion' => 'InterOperability ' ); @$translate_unit = array( ' ' => $infoAll['FileName'], ' ' => date('Y:m:d H:i:s',$infoAll['FileDateTime']), ' ' => round($infoAll['FileSize']/1024) . 'kb', 'Exif ' => $this->getImgtype($imgPath,'Exif'), 'Mime ' => $infoAll['MimeType'], ' Sections' => $infoAll['SectionsFound'], 'html ' => $infoAll['html'], ' ' => $infoAll['Height'] . 'px', ' ' => $infoAll['Width'] . 'px', ' ' => $infoAll['IsColor'] == 1 ? ' ' : ' ', ' Motorola ' => $infoAll['ByteOrderMotorola'] == 1 ? ' ' : ' ', ' ' => $infoAll['ApertureFNumber'], ' ' => $infoAll['Comments'], ' ' => $infoAll['Author'], ' ' => $infoAll['UserComment'], ' ' => $infoAll['UserCommentEncoding'], ' Exif ' => $this->getImgtype($imgPath,'Exif'), ' Mime ' => $infoAll['Thumbnail.MimeType'], ' ' => $infoAll['Make'], ' ' => $infoAll['Model'], ' ' => array_search($infoAll['Orientation'],array( 'top left side' => 1, 'top right side' => 2, 'bottom right side' => 3, 'bottom left side' => 4, 'left side top' => 5, 'right side top' => 6, 'right side bottom' => 7, 'left side bottom' => 8 )), ' ' => $infoAll['XResolution'], ' ' => $infoAll['YResolution'], ' ' => array_search($infoAll['ResolutionUnit'],array( ' ' => 1, ' ' => 2, ' ' => 3 )), ' ' => $infoAll['Software'], ' ' => $infoAll['DateTime'], 'YCbCr ' => $infoAll['YCbCrPositioning'] == 1 ? ' ' : ' ', 'Exif IFD ' => $infoAll['Exif_IFD_Pointer