2012-12-27 70 views
-2

我的圖像在我的網站上顯示爲縮略圖。縮略圖的大小差別很大。理想情況下,我不必在每個縮略圖的尺寸中保存每張照片的副本。相反,我可以在PHP中指定最終尺寸,並在從服務器發送圖像之前調整圖像大小。PHP在不保存文件的情況下調整圖像大小

我是而不是嘗試調整照片上傳到服務器時的大小。我是而不是能夠將圖像保存爲每個縮略圖的大小。

問題是縮略圖的大小因頁面佈局而異。因此,如果我將圖像保存爲每個縮略圖大小,我將節省大約20倍的照片數量。

我試圖拯救「小」「中」和「大」的圖像,然後我叫一個最接近縮略圖大小。看起來有點粗糙,但聽起來這可能是適當的方法。

+1

您要求在每次請願中「動態地」調整圖像大小?您必須考慮保存調整文件的性能。 – m4t1t0

+0

我認爲@Donny P想要設置圖片標籤尺寸屬性,例如height =「120px」。 – HMarioD

回答

3

那麼,你不想耗盡你的磁盤空間,你會耗盡你的CPU資源,這是糟糕得多。
即使你認爲你無法保存在磁盤上的縮略圖,你必須。沒有其他辦法。你只是浪費你的時間,最終轉向正確的設置。

+0

啊,上校回來了...讓我們來看看這一次有多久。 ;) –

2

我做過類似的東西,你可以做的就是這樣的事情,像以前發佈的這個可以使用了大量的資源,並保存到磁盤,通常是更好的,但如果你真的想,給這一個鏡頭:

<?php 

function createThumbnail($filename, $thumbWidth){ 
    $details = getimagesize($filename); 
    $content = file_get_contents($filename); 
    $srcImg = imagecreatefromstring($content); 
    $thumbHeight = $details[1] * ($thumbWidth/$details[0]); 
    $thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight); 
    imagecopyresampled($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $details[0], $details[1]); 
    imagejpeg($thumbImg, null, 100); 
    imagedestroy($srcImg); 
    return $thumbImg; 
} 

header("Content-Type: image/jpeg"); 
echo createThumbnail("/path/to/image.jpg", 200); 
+0

正如上文所指出的那樣,這對資源來說是巨大的壓力。 –

-1

要做到這一點是當然的計算圖像尺寸,並返回img標籤與相應的屬性這樣的最佳方式:

"<img width=\"" . $width . "px\" height=\"" . $height . "\" src="..."/>" 

「對飛」調整圖像大小是太費時。考慮一下你顯示20個圖像的情況,每個圖像縮放消耗150ms(取決於圖像的大小和比例因子)。這將大約超過3秒鐘來顯示單個頁面。你真的想強迫用戶等待這麼長的時間來看看頁面的內容嗎?

相關問題