2010-10-16 67 views
3

我正在改進我的Facebook應用程序。我需要能夠調整圖像大小,然後將其保存到服務器上的目錄中。這是我必須調整的代碼:保存圖像使用PHP調整大小

<?php 
// The file 
$filename = 'test.jpg'; 
$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); 
?> 

我的問題是,我將如何保存這個調整大小的圖像?我需要嗎?有沒有辦法操縱調整大小的圖像,而不保存它

+1

我沒有得到這最後的一句話? – 2010-10-16 19:38:09

回答

8

根據manual on imagejpeg(),可選的第二個參數可以指定將被寫入的文件名。

的路徑保存文件。如果沒有設置或NULL,則原始圖像流將被直接輸出。

要跳過此參數以提供質量參數,請使用NULL。

將結果寫入磁盤進行一些基本緩存通常是一個好主意,這樣不是每個傳入請求都會導致(資源密集型)GD調用。

+0

好的,完美的。只有我不喜歡的是它顯示。我決定如果圖像在後臺調整大小會更好。有沒有一種方法可以強制它保存調整大小的圖像,而不是顯示輸出? – 2010-10-16 21:00:30

+0

@Zachary我不關注。 '$ image_p'已經是調整大小的圖像,不是嗎? – 2010-10-16 21:05:31

+0

是的,但我不想調整大小的圖像顯示,只是保存。這可能嗎? – 2010-10-16 21:13:00

3
function resize($img){ 
/* 
only if you script on another folder get the file name 
$r =explode("/",$img); 
$name=end($r); 
*/ 
//new folder 
$vdir_upload = "where u want to move"; 
list($width_orig, $height_orig) = getimagesize($img); 
//ne size 
$dst_width = 110; 
$dst_height = ($dst_width/$width_orig)*$height_orig; 
$im = imagecreatetruecolor($dst_width,$dst_height); 
$image = imagecreatefromjpeg($img); 
imagecopyresampled($im, $image, 0, 0, 0, 0, $dst_width, $dst_height, $width_orig, $height_orig); 
//modive the name as u need 
imagejpeg($im,$vdir_upload . "small_" . $name); 
//save memory 
imagedestroy($im); 
} 

它應該是工作

相關問題