2012-03-26 73 views
0

我有這樣的代碼,我需要做這項工作:不能做imagejpeg()對多個圖像

  if ($handle = opendir("images/")) { $i=0; 
        while (false !== ($file = readdir($handle))){ 
        if ($file != "." && $file != ".." && $file != "Recursive Dir_Renfiles_dirname-filename.php") { 
         $filename[$i]=$file; 
         $i++; 
        }}} 
        //print_r($filename); 

foreach($filename as $filename){ 
    $percent = 0.5; 

    // Content type 
    header('Content-Type: image/jpeg'); 

    // Get new dimensions 
    list($width, $height) = getimagesize($filename); 
    $new_width = $width * $percent; 
    $new_height = $height * $percent; 

    // Resample  
    $image_p = imagecreatetruecolor($new_width, $new_height); 
    $image = imagecreatefromjpeg($filename); 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

    // Output 
    imagejpeg($image_p, null, 100);  
} 

我有什麼辦法,使這項工作?還是有另一種方法來做到這一點?

+2

嘗試描述至少是什麼問題。 ('這段代碼不起作用'不是描述)。 – GolezTrol 2012-03-26 14:47:17

+0

'imagejpeg()'輸出圖像。您無法生成多個輸出。你想要做什麼?你想把這些圖像混合在一起嗎? – Tchoupi 2012-03-26 14:48:39

+0

是的 - 我們的問題是 - 什麼是不正確的工作?對於我們所知道的,您可能沒有權限編寫這些文件 - 這不是我們通過查看代碼就可以知道的。 – Webnet 2012-03-26 14:48:51

回答

2

如果你在一個頁面上需要多個圖像,你應該使用這個PHP文件來生成一個圖像,然後使用PHP文件作爲一個HTML圖像標記源,就像這樣:

<img src="picture.php?img_id=1" /> 
<img src="picture.php?img_id=2" /> 


注:

當通過$_GET獲取文件名,這將是需要提防意外的字符是一個好主意,尤其是斜線。有人可能會這樣調用URL:picture.php?filename=../badImage.jpg,這可能會顯示一個不同於您希望它們訪問的文件夾中的文件。所以也許做一些像$_GET["filename"] = stripslashes($_GET["filename"]);什麼的。

+0

ok。所以,我可以代替這個將圖像傳遞到此頁面( ),然後這將適用於所有圖像? – 2012-03-26 14:53:58

+0

是的。您的PHP文件一次只會顯示一個圖像,但您的HTML代碼將使用與多個不同圖像的源代碼相同的PHP文件。您只需傳入文件名或圖像ID或其他內容即可讓PHP腳本提取一個特定圖像。 – Travesty3 2012-03-26 14:56:50

+0

因此,不要在你的PHP腳本中使用'$ filename',而是通過'$ _GET [「filename」]'獲得文件名。 – Travesty3 2012-03-26 14:58:02