2013-03-10 62 views
0

我已經使用ci構建了一個圖庫,其中上傳的圖像保持其在3000x5000像素範圍內的相同大小。當顯示它們,因爲我沒有裁剪縮略圖,我怎麼能在需要時重新調整大小,所以說我想重新調整它們的列表爲150x150我該怎麼做呢?實時調整圖像的大小

我跟着引導 http://ellislab.com/codeigniter/user-guide/libraries/image_lib.html

問題是加載它要我指定每個圖像的完整配置信息庫時。 所以說我裝所需的變量顯示在一個視圖控制器,並加載時,它應該是這樣的:

foreach($gallery as $img) 
{ 
    echo "<div>"; 
    echo "<img src='" . $this->img_lib->resize($img->imagepath, 150, 150) . "'>"; 
    echo "</div>"; 

} 

PS:不其調整時,圖像會保存?因爲我不想那樣。

更好的解決方案:http://www.matmoo.com/digital-dribble/codeigniter/image_moo/

+0

沒有人知道嗎? – 2013-03-10 01:30:28

回答

0

我知道怎麼做了CI之外。基本上img「src」需要等於一個php腳本,或者被htaccess攔截,然後將它重定向到一個php腳本。

你可以嘗試這樣的事:

foreach($gallery as $img) 
{ 
    echo "<div>"; 
    echo "<img src='/imageResize.php?path=" . $img->imagepath . "'>"; 
    echo "</div>"; 

} 

文件:imageResize.php

$path = $_REQUEST['path']; 
$this->img_lib->resize($path, 150, 150); 

根據您的網站的文件夾結構,這將是最好只傳遞文件名,而不是完整路徑。更好的辦法是使用.htaccess(我在我們的CMS中執行)來攔截圖像並實時調整大小/裁剪。例如<img src="/path/to/image.jpg?w=150&h=150" />

這是否有助於提供方向?

在您的其他問題上,物理文件不會保存在服務器上,除非您指定這樣做。

+0

哇你的方法甚至沒有跨過我的腦海。它是一個更好的解決方案,直到我找出如何做到這一點的方式。謝謝 ! – 2013-03-10 03:46:58

0

從@SaRiD答案是正確的軌道上。但是,它不一定非在CI之外。您可以將圖像源指向一個控制器方法,該方法負責調整大小並提供圖像。

在此方法中,您還需要使用正確的headers來標識瀏覽器的圖像資源。

您不希望保存的縮略圖

幽州。這顯然取決於應用程序的需要。如果存在(從以前的請求),而不是每次創建和提供縮略圖,您都可以通過它將以前裁剪和保存的縮略圖提供給瀏覽器的方式進行設置,這將爲您節省一些CPU週期。