3

「Gallery」というフォルダがあり、その中に「Gallery-Thumbs」というサムネイル用のフォルダを作成しました。このフォルダに手動でサムネイルを追加します。

私の質問は、サムネイルを手動で追加するか、「GD」または「ImageMagick」を使用して動的にサムネイルを作成する方がよいかどうかです。

サムネイルを手動で追加する際の問題

  • 写真のサムネイルを追加するのを忘れた場合、ギャラリーのチェーンが壊れます
  • サムネイルを作成するためにすべての画像のサイズを変更するのは面倒です

では、PHP ImageProcessing関数を使用すると、サムネイルの作成にオーバーヘッドが追加されますか、それとも正しいアプローチですか?

-クエリに回答するために更新

  1. 「ギャラリー」フォルダに画像を追加するにはどうすればよいですか?

    • 直接ファイルアップロードを介して
  2. それらの画像やサムネイルにはどのようにアクセスしますか?

    • globを使用して、それぞれのフォルダー内のファイルのリストを取得します
  3. 画像をサムネイルにどのようにマッピングしますか?

    • サムネイルにはimageName-thumb.jpgを使用しているので、メインの画像フォルダーと同じ順序でリストに表示されます。
4

5 に答える 5

2

PHP を使用してサムネイルを一度作成し、同じファイル名で「thumbnails」ディレクトリに保存します。次に、これらのすぐに使用できるサムネイルを直接使用します。

于 2012-05-07T12:31:06.863 に答える
1

動的画像処理ツールを使用する場合、それが優れた技術になることを除けば、少し時間がかかるプロセスになります。

手動プロセスを使用する場合:

  • クライアント側のスクリプトを使用してサムネイルを必須にする
  • 画像の向きによって異なります
于 2012-05-07T12:31:36.987 に答える
0

前述のように、GD をサポートする PHP 5 が必要です。$optionsこれらをお持ちの場合は、特定のディレクトリ ( )内のすべての画像から特定のサイズと品質 ( )のサムネイルを作成し、$from_dirそれらを別のディレクトリ ( ) に保存するための非常に便利な機能があります$to_dir

function make_thumbnails($from_dir,$to_dir, $options){
    $files = scandir($from_dir);
    $exclude = array('.','..','etc.');
    foreach($files as $fi => $fv){
        if(!in_array($fv,$exclude)){
            $from_file = $from_dir.$fv;
            $to_file = $target_dir.$fv;
            list($img_width, $img_height,$img_type) = getimagesize($from_file);
            $scale = min($options['max_width'] / $img_width,
                                        $options['max_height'] / $img_height
                               );
            $new_width = $img_width * $scale;
            $new_height = $img_height * $scale;
            $new_img = imagecreatetruecolor($new_width, $new_height);
            $src_img = imagecreatefromjpeg($from_file);
            $success = $src_img && imagecopyresampled(
                    $new_img,
                    $src_img,
                    0, 0, 0, 0,
                    $new_width,
                    $new_height,
                    $img_width,
                    $img_height
            ) && imagejpeg($new_img, $to_file, $options['quality']);
                              //Monitor results with $success - returns 1 or null
            echo '<br />success:['.$success.']';
        }
    }
}

//Set options
$from_dir = ':/source/dir';
$to_dir = ':/destination/dir';
$options = array();
$options['max_width'] = 100;
$options['max_height'] = 100;
$options['quality'] = 100;

// Make thumbs...
make_thumbnails($from_dir,$to_dir,$options);
于 2012-06-10T21:54:40.470 に答える
0

アップロード中にサムネイルを作成し、同じ名前で別のディレクトリに保存するか、ファイル名の前に th_ を追加します。また、いくつかのコードをアップロードして、現在ギャラリーにある画像を見逃した場合に備えて、すべての親指を再度生成することもできます。同時に異なるサイズにサイズ変更したり、透かしを入れたり、他の効果を追加したりすることもできます。これは私のギャラリーで、親指と通常のサイズがあります。親指はアップロード時に鋭くされ、通常は透かしが入っています。ボザー版はドロップシャドウあり、リサイズ等はImagemagickで行いました。 http://www.rubble.info/gallery/

ファイルを表示する前にそこにあることを確認し、見つからない場合は、デフォルトの画像を表示できます。

PHP と Imagemagick でできるさまざまなことについては、私の Web サイトをチェックしてください。

于 2012-05-07T12:51:13.547 に答える
0

変更されないものを保持するために、ある種のキャッシングで GD を使用することを強くお勧めします。ただし、これを行うための優れたライブラリが既にあります。これは私の絶対的なお気に入りであり、GET URL だけで簡単に画像の圧縮とサイズ変更を行うことができます。

ShiftingPixel による Smart Image Resizer をお試しください: http://shiftingpixel.com/2008/03/03/smart-image-resizer/

必要に応じて、私が作成したウェブサイトをそのページ ソースを使用して参照として使用できます: http://www.eastwood-whelpton.co.uk/about/gallery.php

この Web サイトのほぼすべての画像は、Smart Image Resizer GD ライブラリを使用しています。

例が必要な場合は、私が使用した PHP コードを提供することもできます。この特定のコードは、ギャラリー フォルダーにある画像をこのページに自動的に追加します。

于 2012-05-07T12:54:57.173 に答える