検索
ホームページバックエンド開発PHPチュートリアルPHP で写真の 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 までご連絡ください。
PHPの目的:動的なWebサイトの構築PHPの目的:動的なWebサイトの構築Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHP:データベースとサーバー側のロジックの処理PHP:データベースとサーバー側のロジックの処理Apr 15, 2025 am 12:15 AM

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO)PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO)Apr 15, 2025 am 12:15 AM

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPおよびPython:コードの例と比較PHPおよびPython:コードの例と比較Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

アクション中のPHP:実際の例とアプリケーションアクション中のPHP:実際の例とアプリケーションApr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:インタラクティブなWebコンテンツを簡単に作成しますPHP:インタラクティブなWebコンテンツを簡単に作成しますApr 14, 2025 am 12:15 AM

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPython:2つの一般的なプログラミング言語を比較しますPHPとPython:2つの一般的なプログラミング言語を比較しますApr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの永続的な関連性:それはまだ生きていますか?PHPの永続的な関連性:それはまだ生きていますか?Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。