2009-05-29 36 views
2
<?php 
foreach (glob("*.jpg") as $filename) { 
    echo "$filename size " . filesize($filename) . "<br>"; 
    echo '<img src="'.$filename.'" height=150px><br>'; 
} 
?> 

顯示圖像,我能夠 我想只顯示一個滿足尺寸參數的文件夾中顯示所有圖像,如果有更多的忽略它們 基本要顯示的一個這就是像一個盒子排序和使用的代碼基於大小

和或者我想僅顯示foreach循環 和如果沒有圖像顯示默認圖像

EDIT 所以

0123的第一圖像
<?php 
foreach (glob("*.jpg") as $filename) { 
    $info = getimagesize($filename); 
    if ($info[0] == $info[1]) { 
     echo "$filename size " . filesize($filename) . "<br>"; 
     echo '<img src="'.$filename.'" height=150px><br>'; 
     break; 
    } 
} 
?> 

給你,如果它是一個盒子,(感謝schnaader) 權利,但接近一箱圖片應包含太多的圖像,這怎麼可能進行排序, 意義,如果除以寬度高度提供了更多的比1

+2

請澄清你的意圖一點。什麼是您想要過濾圖像的「大小參數」?是以像素爲單位的寬度和高度,還是以千字節爲單位的圖像所需的存儲空間?我假設前者是因爲你想要一個「像一個盒子」,但它是否需要完全正方形,或具有一定的縱橫比,或其他一些方格標準? – 2009-05-29 21:38:09

回答

2

您可以用break只顯示前圖像:

foreach (glob("*.jpg") as $filename) { 
    echo "$filename size " . filesize($filename) . "<br>"; 
    echo '<img src="'.$filename.'" height=150px><br>'; 
    break; 
} 

只用於打印,以滿足特定的大小,使用getimagesize和比較一個你想要的寬度/高度的人,所以基本上使用上面的代碼,但是如果圍繞着行進行換行邊foreach循環。以下可以工作,但我還沒有長期使用PHP,所以不要依賴它:

foreach (glob("*.jpg") as $filename) { 
    $info = getimagesize($filename); 
    if ($info[0] == $width_i_want) { 
     if ($info[1] == $height_i_want) { 
     echo "$filename size " . filesize($filename) . "<br>"; 
     echo '<img src="'.$filename.'" height=150px><br>'; 
     break; 
     } 
    } 
} 

如果你想要得到的平方大小的圖像,使用

if ($info[0] == $info[1]) { 
    [...] 

編輯:爲了得到最接近於正方形大小的圖像,嘗試:

$record_ratio = 0; 
foreach (glob("*.jpg") as $filename) { 
    $info = getimagesize($filename); 
    $ratio = $info[0]/$info[1]; 
    if (abs(1 - $ratio) < abs(1 - $record_ratio)) { 
     $record_ratio = $ratio; 
     $record_filename = $filename; 
    } 
    if (record_ratio == 1) break; 
} 
if ($record_ratio > 0) { 
    echo '<img src="'.$record_filename.'" height=150px><br>'; 
} 

的此變化也可以給你通過比率或圖像排序的圖像與例如0.75 <兩個值(之間的比率=比率< = 1.25)。

+0

ohh對,我有多愚蠢, – vache 2009-05-29 21:37:11