2010-02-16 74 views
2

這是我第一次使用函數ImageCopyResampled。我只是跟着寫在PHP manual的代碼。我運行代碼時似乎沒有錯誤。問題是我的代碼基本上覆制了原始圖像,並沒有按照在函數中傳遞的參數中定義的尺寸。以下是我的代碼:PHP - ImageCopyResampled問題

public static function uploadFile($filename, $x_dimension, $y_dimension, $width, $height){ 
     $file = DOCROOT . "uploads/temp/".$filename; 
     $trgt_file = DOCROOT . "uploads/images/thumbs/".$filename; 

     if(is_file($file) AND file_exists($file)): 
       $trgt_w = 198; 
       $trgt_h = 130; 
       if(copy($file, $trgt_file)): 
         $src_img = imageCreateFromJpeg($file); 
         $trgt_img = imageCreateTrueColor($trgt_w, $trgt_h); 
         imageCopyResampled($trgt_img, $src_img, 0, 0, $x_dimension, $y_dimension, $trgt_w, $trgt_h, $width ,$height); 
         unlink($file); 
       endif; 
     endif; 
} 

此功能只是複製源文件,不發生裁剪。我錯過了什麼?

順便說一句,我使用kohana 3.謝謝。

+0

建議,而不是回答,但你應該看看ImageMagick - http://us2.php.net/imagick-它給你一些優秀的編輯工具。 – Sonny 2010-02-16 16:34:37

回答

1

您不會將$trgt_img保存到文件中,因此腳本結束時裁剪的圖像會丟失。

您需要使用imageJPEG()(或任何您想要寫入的格式)寫出數據。

imageCopyResampled($trgt_img, $src_img, 0, 0, 
        $x_dimension, $y_dimension, $trgt_w, $trgt_h, 
        $width ,$height); 

imagejpeg($trgt_img, $filename, 90); // 90 is for quality - 75 is the default 
0

Pekka的回答是正確的,但被保存爲不正確的文件名應該是$ trgt_file而不是$ filename;