2010-02-16 104 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;