0

私はphpが初めてで、画像ギャラリーを作成しています。私が書いたコードは機能し、うまく機能しますが、サーバーにファイルをアップロードする必要があります。ギャラリーはサムネイル画像をページにロードすることで機能し、サムネイルをクリックするとファンシーボックスのポップアップが開き、サムネイルの高解像度バージョンが表示されます。

フォルダ構造には 2 つの画像があります。写真は /gfx/photos にあり、サムネイルは /gfx/photos/thumbs にあります。新しい写真が /gfx/photos/ フォルダーに追加されたかどうかを確認し、/gfx/photos/thumbs フォルダーにサムネイルを自動的に作成する PHP スクリプトを作成しようとしています。サイズ変更の部分はできますが、2 つのファイルを相互に比較するのに助けが必要です。サムネイルと写真はまったく同じ名前で、別々の場所に住んでいます。

私は次のように機能する画像配列を持っています:

<?PHP
    $dir = "gfx/photos/thumbs";
    $files = scandir($dir);

    foreach ($files as $key => $value);
    $result = count($files);
    for ($i = 0; $i < $result; $i++) {
      /* loads appropriate code for every file... */
    }

?>

このコードを使用してファイルを相互にチェックできますか、それとも別のコードを使用する必要がありますか。

助けてくれてありがとう!

4

1 に答える 1

0

これは、この結果を取得する簡単な方法であり、ディレクトリが数百万の画像でいっぱいにならない限りうまく機能しますが、数百万の画像を保持できる場合は、おそらくそれらを小さなディレクトリに分割する必要があります。

scandirは整数のインデックス付き配列を返すため、通常、画像を見つけるために配列検索を行う必要があります。でも。array_flipを使用してこれを行う場合:

$image_name = "some_image.jpg";

$dir = "gfx/photos/thumbs";
$files = scandir($dir);

$files = array_flip($files); // makes the values = to keys and keys = values

// now you have an 0(1) look up table that you can simply check if the key exists
// which, now that we flipped the array, are the file names
if(!isset($files[$image_name])){
    // create the thumbnail etc
}
于 2012-05-22T15:00:16.800 に答える