私は現在、ランダムな画像を吐き出すこのスニペットを持っています
$imgDir = 'images/';
$images = glob($imagesDir . '*.{jpg}', GLOB_BRACE);
$randimg = $images[array_rand($images)];
しかし、CSSを使用して画像をゆがめるのではなく、画像を特定の幅(600px)にしたいのですが、上記のコードスニペットを組み込んだPHPを使用して画像の幅を確認する方法はありますか?
はい、個々のファイルを調べて、そのサイズを で確認できますgetimagesize
。
もちろん、毎回行うには非常にコストのかかる操作です。代わりに、これを一度実行して、サイズをファイル名の一部にするか (例: foobar_500.jpg
) glob
、データベースを使用して画像を整理し、そのようなメタデータを保存してクエリを実行できる場所から始めます。
これにより、幅600の画像からランダムな画像のみを選択できるようになります
$imgDir = 'images/';
$images = glob($imgDir . '*.{jpg}', GLOB_BRACE);
$arr_images_600 = array();
foreach ($images as $img)
{
list($width, $height, $type, $attr) = getimagesize($img);
if ($width == 600) { $arr_images_600[] = $img; }
}
$randimg = $images[array_rand($arr_images_600)];