我現在有此代碼段,其吐出隨機圖像PHP的隨機圖像,其中寬度等於
$imgDir = 'images/';
$images = glob($imagesDir . '*.{jpg}', GLOB_BRACE);
$randimg = $images[array_rand($images)];
但我想要的圖像是一定寬度(600像素),而不是通過使用CSS翹曲的圖像是有一種可以使用包含上面代碼片段的PHP來檢查圖像寬度的方法?
我現在有此代碼段,其吐出隨機圖像PHP的隨機圖像,其中寬度等於
$imgDir = 'images/';
$images = glob($imagesDir . '*.{jpg}', GLOB_BRACE);
$randimg = $images[array_rand($images)];
但我想要的圖像是一定寬度(600像素),而不是通過使用CSS翹曲的圖像是有一種可以使用包含上面代碼片段的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)];
謝謝,但我想我會在數據庫中存儲圖像寬度的答案,並使用RAND()查詢調用它,就像他說getimagesize是一個昂貴的操作,特別是當我結束50,000張圖片。 – 2012-07-24 10:03:51
謝謝deceze,要去與數據庫選項,並使用RAND()查詢圖像選擇隨機圖像。 (2mins b4我可以標記爲答案) – 2012-07-24 10:04:42