这是我第一次使用ImageCopyResampled函数。我只是遵循PHP manual中编写的代码。运行代码时似乎没有错误。问题是我的代码只是基本上复制原始图像,并没有遵循在函数中传递的参数中定义的维度。以下是我的代码:
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;
}
此功能只是复制源文件而没有发生裁剪。我错过了什么?
BTW,我正在使用kohana 3.谢谢。
答案 0 :(得分: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
答案 1 :(得分:0)
Pekka的答案是正确的,但保存的文件名不正确,应该是$ trgt_file而不是$ filename;