3つのステップでPHPでダイナミックフォトギャラリーを作成する
デジタルカメラをお持ちの場合は、おそらく思い出に残る瞬間のデジタルフォトギャラリーもあります。 あなたはデジタルフォトギャラリーを持っている場合と、あなたは非常に一般的な問題に遭遇していることはほぼ確実です:彼らは簡単に検索し、イン
今、あなたはこれを知らないかもしれませんが、ほとんどのデジタルカメラは自動的に作成した画像のヘッダーに記述的なメタデータを埋め込みます。 EXchangeable Image File(EXIF)ヘッダーと呼ばれるこれらのヘッダーには、カメラの製造元とモデル、写真が撮影された時間と日付、写真の技術仕様(shutterspeed、apertureなど)、画像のサムネイル また、”Sally’s first footballgame”や”Getting drunk in Malta”など、自動的に生成されたheaderswithを補完することができます。
私はこれでどこに行くのか分かります。 想像力と創造的思考の少しで、それは自動的にあなたの写真コレクションを整理し、記述するためにyourcamera(そして、あなたが時間と動機を持っている場合、 この記事では、PHPのEXIF関数を使用する方法を説明します。ステップ1:PHPビルドがEXIF
をサポートしていることを確認するEXIFヘッダーを読み取るには、PHPビルドにEXIFmoduleのサポートが含まれている必要があります。 このサポートが有効になっているかどうかを確認するには、リストAに示すコードを含むPHP scriptcontainingを作成します。
<?php
phpinfo();
?>
このスクリプトの出力をWebブラウザで表示し、exifが含まれているかどうかを確認するためにextensionsのリストを確認します。 そうであれば、次のステップに移動します。 そうでない場合は、PHPのEXIF関数を有効にする必要があります。ini(Windows)または–enable-exif引数(UNIX)を使用してPHPビルドを再コンパイルします。 これを行う方法の詳細は、PHPのWebサイトで入手できます。
ステップ2: 写真を一つのディレクトリに移動する
次に、ウェブサーバーのdocumentrootの下の一つのディレクトリに全ての写真を集めましょう。 これはまた、eachimageに独自の説明的なコメントを追加するのに良い時期です(これは必須ではありませんが)。 良いシェアウェアとfreewaretoolsの数は、あなたがこれを行うのを助けるために利用可能です。
ステップ3: 写真のヘッダーとコメントを読むためのコードを書く
最後のステップは、yourimagesからEXIFデータを抽出し、自動的にサムネイル、技術的な情報と各画像の大きなバージ 二つのスクリプトがありますここでは、最初のもの、ギャラリー。php(リストBを参照)は写真を探し、それらからEXIFヘッダーを抽出しますが、2番目のものはサムネイルです。php(リストCを参照)は、各写真からサムネイル画像を抽出する責任があります。
リストB-ここにギャラリーのコードがあります。php
<html>
<head></head>
<body>
<table>
<?php
//ディレクトリパス
define dir=”を定義します。If(is_dir(dir dir)){
if(is dh=opendir($dir)){
while((file file=readdir(d dh))!==false){
if(preg_match(“/.jpg exif=exif_read_data(file file,0,true);
echo”<tr>”;
//サムネイルを取得
//完全な画像へのリンク
echo”<td valign=top><a href=$dir/file file><imgsrc=サムネイル。php?file=$file></a><td>”;
echo”<td valign=top><フォントサイズ=-1>”;
// ファイル名
エコー”ファイル:<b>”を取得します。 $exif。 “</b><br/>”;
// タイムスタンプ
エコー”タイムスタンプ:”を取得します。 $exif。 “</>”;
// 画像の寸法を取得
“寸法:”をエコーします。 $exif。 “x”。 $exif。 “</>”;
// カメラのメーカーとモデルを取得
echo”Camera:”. ├エクシフ;
echo”</font></td>”;
echo”</tr>”;
}
}
定休日(日-祝));
}
}
?>
</テーブル>
</ボディ>
</html>
Thisscriptは、PHPのディレクトリ関数を使用してディレクトリ内のすべてのJPEG画像のalistを取得し、exif_read_data()関数を使用して各画像からEXIFヘッダーをarrayとして読み 各画像は、thumbnailによって提供される情報を使用してサムネイルとして表示されます。php、およびeachthumbnailは、それ自体が親画像にハイパーリンクされています。 関連情報—imagename、寸法、タイムスタンプとカメラモデル—は、これらのheadersandから抽出され、各サムネイルで表示されます。
EXIFエディタを使用して画像に独自のコメントを追加した場合は、適切な配列要素にアクセスしてその情報を取得して表示することができます。 Print_r(ex exif)を使用してcustom exif配列の内部を見て、カスタムメタデータの配列パスを調べます。
注:カメラメーカーによってEXIFヘッダーの使用方法が異なります。 上記のスクリプトの出力に情報が欠落しているように見える場合は、print exif配列内をprint_r(ex exif)してprint_r(print exif)して、カメラがEXIFデータをどのように書き込むかを正確に調べ、上記のスクリプト(ListingB)の配列キーに適切な調整を行う必要があります。
リストC-サムネイルのコードは次のとおりです。php
<?php
//ディレクトリパス
define dir=”を定義します。”;
image image=exif_thumbnail(dir dir. “/” . Header_GET);
header(“Content-Type:image/jpeg”);
echo image image;
?>
THISSCRIPTは非常に簡単です—URLから画像ファイル名を取得し、exif_thumbnail()関数を使用して指定された画像からサムネイルを抽出します。 このサムネイルは、適切なヘッダーと一緒にthebrowserに送信され、表示されます。
あなたの写真を含むディレクトリにこれらのスクリプトの両方を配置し、yourWebブラウザを使用してギャラリーにアクセスします。php。 あなたはのサムネイルが表示されるはずですディレクトリ内の画像、それぞれの説明的な情報と一緒に。サムネイルをクリックすると、より大きな親画像に移動します。
図Aは、出力がどのように見えるかの例です。:
図A
スクリーンショットの例
Andthereあなたはそれを持っている—自動的に生成されたフォトギャラリー! フォルダにnewimagesをコピーすると、自動的にギャラリーの一覧に表示されます。それはきちんとしていませんか?
: 各スクリプトの先頭にあるphot dirvariableをphotocollectionへの正しいパスで更新することを覚えていれば、手順3で作成したスクリプトを写真を含むディレクトリとは別の