2012-07-24 44 views
0

我現在有此代碼段,其吐出隨機圖像PHP的隨機圖像,其中寬度等於

$imgDir = 'images/'; 
$images = glob($imagesDir . '*.{jpg}', GLOB_BRACE); 
$randimg = $images[array_rand($images)]; 

但我想要的圖像是一定寬度(600像素),而不是通過使用CSS翹曲的圖像是有一種可以使用包含上面代碼片段的PHP來檢查圖像寬度的方法?

回答

3

是的,你可以通過每個單獨的文件並檢查其大小getimagesize

這當然是一項非常昂貴的操作。相反,執行一次操作並將大小作爲文件名的一部分(例如foobar_500.jpg)和glob,或者使用數據庫來組織圖像,以便從保存此類元數據並查詢它的位置開始。

+0

謝謝deceze,要去與數據庫選項,並使用RAND()查詢圖像選擇隨機圖像。 (2mins b4我可以標記爲答案) – 2012-07-24 10:04:42

0

這將確保你只從具有寬度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)]; 
+0

謝謝,但我想我會在數據庫中存儲圖像寬度的答案,並使用RAND()查詢調用它,就像他說getimagesize是一個昂貴的操作,特別是當我結束50,000張圖片。 – 2012-07-24 10:03:51