2011-07-12 126 views
0

我要動態地生成縮略圖,並且我從這裏的帖子使用SimpleImage類建議的一個發現,它是使用這樣的:動態縮略圖用PHP

header('Content-Type: image/jpeg'); 
include('SimpleImage.php'); 
$image = new SimpleImage(); 
$image->load('picture.jpg'); 
$image->resizeToWidth(150); 
$image->output(); 

和輸出方法如下:

function output($image_type=IMAGETYPE_JPEG) { 

    if($image_type == IMAGETYPE_JPEG) { 
     imagejpeg($this->image); 

    } elseif($image_type == IMAGETYPE_GIF) { 
     imagegif($this->image); 

    } elseif($image_type == IMAGETYPE_PNG) { 
     imagepng($this->image); 

    } 
} 

這與輸出圖像正常工作,因爲我收到類似客戶端的二進制代碼的東西。但我要的是一個縮略圖滑塊,所以我需要所有的圖像是在一個< UL> </ul>,我想這用ajax:

更新

function thumb($files){ 
    echo '<ul>'; 
    foreach($files as $file){ 
     $thumb = new Thumbnail(); 
     $thumb->load($file->getFilePath()); 
     $thumb->resizeToWidth(80); 
     echo '<li>'.$thumb->output().'</li>'; 
    }; 
    echo '</ul>'; 
} 

但這並不似乎工作。我怎麼能得到這樣的輸出,所以我可以做一個滑塊庫。

<ul> 
    <li><img src="path here"></li> 
    <li><img src="path here"></li> 
</ul> 
+0

你需要做的是將所有的圖像生成代碼包裝到一個只供應一個單一圖像的腳本中。然後你的HTML調用''中的腳本。在這裏看到我的答案:http://stackoverflow.com/questions/6625427/how-to-serve-multiple-images-which-reside-above-the-www-root-within-a-single-page/6625590#6625590 –

+0

這是因爲您無法使用一個Content-type:image/jpeg標頭輸出多個圖像。 –

+0

@Kthompson ,,,意思是我沒有得到圖像列表..只有二進制代碼 – bingjie2680

回答

0

你混淆了兩件事:圖像的html佈局和圖像的縮放比例。你需要保持你的縮放代碼 - 這是完全正常的 - 在一個單獨的PHP文件,比方說,scale.php - 就像這樣:

<?php 
    header('Content-Type: image/jpeg'); 
    include('SimpleImage.php'); 
    $image = new SimpleImage(); 
    $image->load($_GET['image']); 
    $image->resizeToWidth(150); 
    $image->output(); 
?> 

而在你的主要的PHP,你就會有這樣的代碼:

<?php 
    echo '<ul>'; 
    foreach($files as $file){ 
     echo '<li><img src="scale.php?image=' . $file . '"/></li>'; 
    } 
    echo '</ul>'; 
?> 
+1

從GET參數直接使用圖像名稱並不是一個好主意。嘗試使用mysql表格,例如像「image_id => file_name.jpg」的數據,並將數字image_id傳遞給腳本。 – Ostin

+0

嗨,謝謝你的回答,我應該將生成的thumnail保存在某個地方嗎? – bingjie2680

+0

@Ostin,我有點不理解你。如果我們使用數字ID,我們在哪裏得到文件路徑? – bingjie2680