2012-02-19 60 views
0

我目前使用phpthumb產生的個人資料圖片縮略圖。 http://phpthumb.gxdlabs.com/什麼是最好使用phpthumb?

這是我目前的方法:

<?php 
$path_to_profile_pic = '../icons/default.png'; 
$profile_pic = file_get_contents('icons/default.png'); 
$small_profile_pic = PhpThumbFactory::create($profile_pic, array(), true); 
$small_profile_pic->adaptiveResize(25, 25); 
$small_profile_picAsString = $small_profile_pic->getImageAsString(); 
?> 
<img src="data:image/png;base64,<?php echo base64_encode($small_profile_picAsString); ?>" width="25" height="25" /> 

然而,這是非常緩慢的原因爲base64,因爲它在你的代碼生成大量的文本。 什麼是使用phpthumb生成縮略圖的最佳方式?

編輯

有沒有辦法做到這一點不保存其它圖像,因爲它會佔用更多的空間?

回答

2

你最好不要總是產生,而不是試圖通過點播PHP腳本爲他們服務的上傳/創建圖像的縮略圖版本。您可以使用一些代碼將生成的文件緩存到文件系統,但仍然比使用apache提供它們慢得多。

如果您無法上載創建縮略圖/創建您可以通過緩存縮小縮略圖文件系統和服務他們爲每個後續請求優化當前的實現:

<?php 
$path_to_thumb_pic = '../icons/default_thumb.png'; 
if (!file_exists($path_to_thumb_pic)) { 
    $path_to_profile_pic = '../icons/default.png'; 
    $profile_pic = file_get_contents('icons/default.png'); 
    $small_profile_pic = PhpThumbFactory::create($profile_pic, array(), true); 
    $small_profile_pic->adaptiveResize(25, 25); 
    $small_profile_pic->save($path_to_thumb_pic); 
} 
?> 

<img src="<?php echo $path_to_thumb_pic; ?>" width="25" height="25" /> 
+0

是否有辦法要做到這一點,而不會另存圖片,因爲它會消耗更多空間? – 2012-02-19 06:11:25

+0

@MicoAbrina如果不是磁盤那麼只有在其它地方是在某種內存緩存的內存。但是,如果您擔心磁盤空間,那麼我想內存也是一樣。磁盤空間是現在最便宜的硬件資源..是真的嗎? – 2012-02-19 06:14:49

+0

我正在使用此爲我的網站的個人資料圖片。問題是,如果個人資料圖片發生變化,系統將如何知道生成另一個縮略圖? – 2012-02-19 06:21:51