目次
PHPで写真のexif情報を読み取る方法
ホームページ バックエンド開発 PHPチュートリアル PHP で写真の exif 情報を読み取る方法、_PHP チュートリアル

PHP で写真の exif 情報を読み取る方法、_PHP チュートリアル

Jul 13, 2016 am 10:20 AM
exif php 写真

PHPで写真のexif情報を読み取る方法

まずは写真のExif情報とは何かを理解しましょう

Exif は画像ファイル形式であり、そのデータストレージは JPEG 形式とまったく同じです。実際、Exif 形式は、絞り、シャッター、ホワイト バランス、ISO、焦点距離、日付と時刻、カメラのブランド、モデル、カラーコーディングなどのさまざまな撮影条件を含むデジタル写真情報を JPEG 形式のヘッダーに挿入します。 、撮影 録音された音声のほか、全地球測位システム (GPS)、サムネイルなど。簡単に言えば、Exif=JPEG+撮影パラメータです。したがって、JPEG ファイルを表示できる画像表示ソフトウェアを使用して Exif 形式の写真を表示できますが、すべてのグラフィックス プログラムが Exif 情報を処理できるわけではありません。

上記は百度百科事典より引用。

写真の EXIF 情報の読み取りは多くの場合必要ありませんが、写真フォーラム Hummingbird など、写真技術について議論するいくつかのサイトと比較して、写真の EXIF 情報の読み取りは特に重要です。

ハミングバードフォーラムのスクリーンショット、赤丸の情報はプログラムが読み込んだ写真のexif情報です。画像をローカルにダウンロードし、Light and Shadow Magic を使用して画像を開いて Exif 情報を確認します。もちろん、Light と Shadow 以外にも、画像の Exif 値を確認できるツールはたくさんあります。

Exif情報内のレンズ値が読み取れなかった以外は正しく読み込めます。

PHPモジュールを有効にする

デフォルトでは、画像のExif情報を読み取るためのPHPモジュールは有効になっていません。最初にこのモジュールを有効にする必要があります。

Exif モジュールを開くには mbstring のサポートが必要なので、最初に mbstring をインストールします。以下は例として Linux 環境に基づいています。

mbstringモジュールをインストールします

まず、php ソース コード パッケージの場所を見つけて、ext/mbstring に直接移動し、次のコマンドを実行してインストールします。特定のパラメーターはご使用の環境によって異なります。

コードをコピーします コードは次のとおりです:

[root@lee ext]# cd /data0/software/php/ext/mbstring
[root@lee mbstring]# /usr/local/webserver/php/bin/phpize
構成:
PHP API バージョン: 20090626
Zend モジュール API 番号: 20090626
Zend 拡張機能 API 番号: 220090626
[root@lee exif]# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
[root@lee mbstring]# make && make install
共有拡張機能のインストール: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
ヘッダー ファイルのインストール: /usr/local/webserver/php/include/php/
[root@lee mbstring]#

インストール後、拡張機能ディレクトリに移動して、モジュールが存在するかどうかを確認できます。存在する場合は、インストールが成功したことを意味します。

コードをコピーします コードは次のとおりです:

[root@lee mbstring]# cd /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
[root@lee no-debug-non-zts-20090626]#ll
合計使用量 1880
-rwxr-xr-x 1 ルート root 414405 2012 年 6 月 12 日 eaccelerator.so
-rwxr-xr-x. 1 ルート root 1091242 2011 年 9 月 23 日 imagick.so
-rwxr-xr-x. 1 ルート root 5285 2 月 20 日 15:07 mbstring.so
-rwxr-xr-x. 1 ルート root 246752 2011 年 9 月 23 日 memcache.so
-rwxr-xr-x. 1 ルート root 154252 2011 年 9 月 23 日 pdo_mysql.so

exifモジュールをインストール

mbstring モジュールのインストールと同様に、最初にソース コードの場所を見つけてそこに移動し、インストールを構成します。特定のパラメーターは独自の環境によって異なります。

コードをコピーします コードは次のとおりです:

[root@lee exif]# cd /data0/software/php-5.3.13/ext/exif
[root@lee exif]# ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
[root@lee exif]# make && make install
共有拡張機能のインストール: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
[root@lee exif]#

拡張機能ディレクトリに入って、インストールが成功したかどうかを確認してください

コードをコピーします コードは次のとおりです:

[root@lee exif]# cd /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/
[root@lee no-debug-non-zts-20090626]#ll
総使用量 2036
-rwxr-xr-x 1 ルート root 414405 2012 年 6 月 12 日 eaccelerator.so
-rwxr-xr-x. 1 root root 158554 2月20日 15:25 exif.so
-rwxr-xr-x. 1 ルート root 1091242 2011 年 9 月 23 日 imagick.so
-rwxr-xr-x. 1 ルート root 5285 2 月 20 日 15:07 mbstring.so
-rwxr-xr-x. 1 ルート root 246752 2011 年 9 月 23 日 memcache.so
-rwxr-xr-x. 1 ルート root 154252 2011 年 9 月 23 日 pdo_mysql.so
[root@lee no-debug-non-zts-20090626]#

exif.so モジュールはすでに存在します。

php.iniにモジュールを追加
php.ini を開き、次の 2 行を追加します

コードをコピーします コードは次のとおりです:
extension = "mbstring.so"
拡張子 = "exif.so"

また、extension_dir の値が、モジュールのインストール時に表示される共有拡張機能のインストールの値と一致していることを確認します。たとえば、モジュールをインストールすると、拡張機能の場所が
と表示されます。
コードをコピーします コードは次のとおりです:
/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/

次に、php.ini の extension_dir が正しいディレクトリを指している必要があります
コードをコピーします コードは次のとおりです:
extension_dir="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20090626/"

php.ini を保存し、Web サーバーを再起動します。
phpinfo() を開いて、対応するプロパティを見つけて、適切に動作しているかどうかを確認します

通常、次の 2 つのモジュール情報が表示されます

exif_read_data()を使用して画像のexif情報を読み取ります

exif 情報の読み取りをサポートする画像タイプは jpeg または tiff タイプのみであり、これで十分です。
exif_read_data() 関数のユーザーマニュアルを見てみましょう

コードをコピーします コードは次のとおりです:

array exif_read_data ( string $filename [, string $sections = NULL [, bool $arrays = false [, bool $thumbnail = false ]]] )

パラメータ:

filename: 画像の exif 情報を読み取るための画像パス。これを URL にすることはできません。 セクション: 結果の配列を生成するためにファイル内に存在する必要があるセクションのカンマ区切りのリストです。要求されたセクションが見つからない場合、戻り値は FALSE です。

ファイルファイル名、ファイルサイズ、ファイル日時、見つかったセクション計算済みhtml、幅、高さ、IsColor など。高さと幅は getimagesize() と同じメソッドを使用して計算されるため、それらの値を返されるヘッダー情報の一部にすることはできません。なお、htmlとは通常のHTMLANY_TAGIFD0、EXIFなどのタグを含む情報IFD0IFD0のすべてのマークされたデータ。標準の画像ファイルでは、これには画像サイズなどが含まれます。 サムネイル 2 番目の IFD がある場合、ファイルにはサムネイルが含まれている必要があります。埋め込まれたサムネイルに関するすべてのマークアップ情報は、この領域に保存されます。 コメントJPEG画像の注釈ヘッダー情報。 EXIFEXIF セクションは IFDO のサブセクションであり、画像に関するより詳細な情報が含まれています。内容はデジタルカメラ関連がほとんどです。

arrays: 各セクションが配列になるかどうかを指定します。セクション COMPUTED、THUMBNAIL、および COMMENT セクションは、他のセクションと競合する名前が含まれているため、常に配列になります。

サムネイル: TRUE に設定すると、サムネイル自体を読み取ります。それ以外の場合は、タグ データのみが読み取られます。

写真のexif情報を読んでみましょう

コードをコピーします コードは次のとおりです:

$exif = getExif('a.jpg');
echo '
';<br>
print_r($exif);<br>
echo '
';

実行結果:
コードをコピーします コードは次のとおりです:

配列
(
    [ファイル名] => a.jpg
    [ファイル日時] => 1361340032
    [ファイルサイズ] => 69170
    [ファイルタイプ] => 2
    [MimeType] =>画像/jpeg
    [セクションが見つかりました] => ANY_TAG、IFD0、サムネイル、EXIF、GPS、相互運用
    [計算済み] =>配列
        (
            [html] =>幅="600" 高さ="397"
            [高さ] => 397
            [幅] => 600
            [IsColor] => 1
            [バイトオーダーモトローラ] => 1
            [絞りF番号] => f/13.0
            [フォーカス距離] => 3.76メートル
            [ユーザーコメント] =>
            [UserCommentEncoding] =>アスキー
            [著作権] =>                                                     
            [サムネイル.ファイルタイプ] => 2
            [サムネイル.MimeType] =>画像/jpeg
        )
    [画像幅] => 4928
    [画像の長さ] => 3264
    [BitsPerSample] =>配列
        (
            [0] => 8
            [1] => 8
            [2] => 8
        )
    [測光解釈] => 2
    [作る] =>株式会社ニコン
    [モデル] =>ニコン D7000
    [向き] => 1
    [ピクセルあたりのサンプル数] => 3
    [X解像度] => 3000000/10000
    [Y解像度] => 3000000/10000
    [解像度単位] => 2
    [ソフトウェア] => Adobe Photoshop CS5 Windows
    [日時] => 2013:02:18 20:50:46
    [ホワイトポイント] =>配列
        (
            [0] => 313/1000
            [1] => 329/1000
        )
    [主色度] =>配列
        (
            [0] => 64/100
            [1] => 33/100
            [2] => 21/100
            [3] => 71/100
            [4] => 15/100
            [5] => 6/100
        )
    [YCbCr係数] =>配列
        (
            [0] => 299/1000
            [1] => 587/1000
            [2] => 114/1000
        )
    [YCbCrPositioning] => 2
    [著作権] =>                                                     
    [Exif_IFD_Pointer] => 500
    [GPS_IFD_Pointer] => 1248
    [サムネイル] =>配列
        (
            [圧縮] => 6
            [X解像度] => 72/1
            [Y解像度] => 72/1
            [解像度単位] => 2
            [JPEGInterchangeFormat] => 1362
            [JPEGInterchangeFormatLength] => 4784
        )
    [露出時間] => 40/10
    [F番号] => 130/10
    [露出プログラム] => 1
    [ISOSpeedRatings] => 1000
    [未定義タグ:0x8830] => 2
    [ExifVersion] => 0230
    [日時オリジナル] => 2013:02:14 21:12:08
    [DateTimeDigitized] => 2013:02:14 21:12:08
    [コンポーネント構成] =>
    [CompressedBitsPerPixel] => 4/1
    [シャッタースピード値] => -2/1
    [ApertureValue] => 7400879/1000000
    [露出バイアス値] => 2/6
    [MaxApertureValue] => 10月36日
    [被写体の距離] => 376/100
    [測光モード] => 3
    [光源] => 0
    [フラッシュ] => 16
    [焦点距離] => 180/10
    [ユーザーコメント] =>アスキー
    [サブ秒時間] => 10
    [SubSecTimeOriginal] => 10
    [SubSecTimeDigitized] => 10
    [FlashPixバージョン] => 0100
    [カラースペース] => 65535
    [ExifImageWidth] => 600
    [ExifImageLength] => 397
    [相互運用性オフセット] => 1216
    [センシング方法] => 2
    [ファイルソース] =>
    [シーンタイプ] =>
    [CFAPパターン] =>
    [カスタムレンダリング] => 0
    [露出モード] => 1
    [ホワイトバランス] => 0
    [デジタルズーム比率] => 1/1
    [35mmフィルムの焦点距離] => 27
    [SceneCaptureType] => 0
    [ゲインコントロール] => 2
    [コントラスト] => 0
    [彩度] => 0
    [シャープネス] => 0
    [被写体の距離の範囲] => 0
    [未定義タグ:0xA500] => 10/22
    [GPSバージョン] =>
    [InterOperabilityIndex] => R03
    [InterOperabilityVersion] => 0100
)

如果示唆:

复制代码代码如下:

致命的なエラー: /data0/htdocs/www/exif/index.php の 2 行目で未定義関数 exif_read_data() を呼び出します

これは、モジュールが開いていないことを示しています。おそらく、いずれかのブロックが適切に構成されておらず、再構成が適切である可能性があります。

从Exif情報读取結果中取出された有用な情報 上記の実行結果から、非常に多くの画像 Exif が見つかりましたが、必要なのは、フィルタリング パッケージ内の情報から以下の有用な情報を取得することだけです。 この例では、PHP 関数を事前に記述します。光圈、感光度、焦点距離:

复制代価代価如下:

/**
* JPEG画像のExif情報を読み込みます
* $img は画像のパスです
*
*瓊台ブログ
​*/

関数 getExif($img){

$exif = exif_read_data($img, 'IFD0');

配列を返します (
'ファイル名' => $exif['ファイル名'],
'機器ブランド' => $exif['Make'],
'機器' => $exif['モデル'],
'シャッター' => $exif['ExposureTime'],
'絞り' => $exif['FNumber'],
'焦点距離' => $exif['FocalLength'],
'感度' => $exif['ISOSpeedRatings']
);
}

写真を読む

コードをコピーします コードは次のとおりです:
$exifInfo = getExif('a.jpg');
echo '
';<br>
print_r($exifInfo);<br>
echo '
';

実行結果:

コードをコピーします コードは次のとおりです:
配列
(
[ファイル名] => 25556306.jpg
【機材ブランド】 =>株式会社ニコン
【使用機材】 NIKON D3100
[シャッター] => 10/32000
[絞り] =>18/10
[焦点距離] => 350/10
[感度] => 100
)

その他の指示

画像のExif値は対応するツールを通じて変更できるため、プログラムを使用して画像のExif値を読み取ることは、参照としてのみ使用でき、実際の基準としては使用できません。

興味のある友達は、オンライン Exif 情報読み取り Web サイト http://exif.cn にアクセスして楽しむこともできます

PHP モジュールを通じて読み取られる Exif 情報が間違っているか、情報が不完全である場合があります。この場合は、サードパーティのツールを使用できます。次に、php を使用してシステム Linux コマンドを実行して読み取ります

http://www.bkjia.com/PHPjc/866676.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/866676.html技術記事 PHP で写真の Exif 情報を読み取る方法 まず、写真の Exif 情報が何であるかを理解しましょう。Exif は画像ファイル形式であり、そのデータ保存形式は JPEG 形式とまったく同じです。実はエクシ…
で使用できる高さ・幅の文字列です。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles