测试代码:
$createImg = ImageCreateFromjpeg('x.jpg'); //图片大小为200*150
$newimg = imagecreatetruecolor(200,150);
ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=0, $width=200,$height=150, $end_w=200,$end_h=150);
imagejpeg($newimg);几个参数值看过手册,大概理解了它们的作用。只是有些参数经测试,总觉得不是预期中的效果。原图:
比如:
1.设置 $end_w=200,$end_h=150 也就是源文件的宽和高,我将其设置为 $end_w=400,$end_h=300;按我的理解是将图片放大,然后再缩成300*150 也就是和设置成$end_w=200,$end_h=150是一样的。 效果图:
设置后感到意外,高和宽变成了 100*75;我想是因为这函数是通过,设定原图的高宽值与生成新图的宽高的计算出比例。然后再通过原图实际的宽高各自除于这个比例生成的。
而我将$end_w=200,$end_h=150 设置一个小于原图的值则是另外一种情况。比如设为$end_w=100,$end_h=150
.函数会将截原图宽截取100,然后拉直到200.
效果图:
2.设置 $start_w=0, $start_h=12.5 本想 将图片压成100*75 截取高50 中间部分。设置
$newimg = imagecreatetruecolor(100,50);
ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=24.5, $width=100,$height=75, $end_w=200,$end_h=150)生成图片是原图往上 24.5再压, 下方多余的24.5被画布大小局限挡住不可见;达到了预期的目标。不知这种实现方式是否正确。
效果图:压了成为 100*75 在通过75/2 计算出两边截12.5 应该是一样的,不知可否实现。刚接触这个函数不久,大家多提提意见;越啰嗦越好阿。先谢谢大家了!
$createImg = ImageCreateFromjpeg('x.jpg'); //图片大小为200*150
$newimg = imagecreatetruecolor(200,150);
ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=0, $width=200,$height=150, $end_w=200,$end_h=150);
imagejpeg($newimg);几个参数值看过手册,大概理解了它们的作用。只是有些参数经测试,总觉得不是预期中的效果。原图:
比如:
1.设置 $end_w=200,$end_h=150 也就是源文件的宽和高,我将其设置为 $end_w=400,$end_h=300;按我的理解是将图片放大,然后再缩成300*150 也就是和设置成$end_w=200,$end_h=150是一样的。 效果图:
设置后感到意外,高和宽变成了 100*75;我想是因为这函数是通过,设定原图的高宽值与生成新图的宽高的计算出比例。然后再通过原图实际的宽高各自除于这个比例生成的。
而我将$end_w=200,$end_h=150 设置一个小于原图的值则是另外一种情况。比如设为$end_w=100,$end_h=150
.函数会将截原图宽截取100,然后拉直到200.
效果图:
2.设置 $start_w=0, $start_h=12.5 本想 将图片压成100*75 截取高50 中间部分。设置
$newimg = imagecreatetruecolor(100,50);
ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=24.5, $width=100,$height=75, $end_w=200,$end_h=150)生成图片是原图往上 24.5再压, 下方多余的24.5被画布大小局限挡住不可见;达到了预期的目标。不知这种实现方式是否正确。
效果图:压了成为 100*75 在通过75/2 计算出两边截12.5 应该是一样的,不知可否实现。刚接触这个函数不久,大家多提提意见;越啰嗦越好阿。先谢谢大家了!
等比缩放我会用,我想搞明白这个函数的具体使用。
比如原图 200*150 $newimg = imagecreatetruecolor(200,150);
ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=0, $width=200,$height=150, $end_w=200,$end_h=150);
imagejpeg($newimg); $newimg = imagecreatetruecolor(200,150);
ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=0, $width=200,$height=150, $end_w=400,$end_h=300);
imagejpeg($newimg);
第二个例子 将$end_w=200,$end_h=150。输出图片反而小了 变成100*75。 为什么会这样的呢。
学过 传入参数到这个函数,和自己预期想要的结果不一样。 比如原图是200*150 我设置$newimg = imagecreatetruecolor(200,150);
ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=0, $width=200,$height=150, $end_w=400,$end_h=300);
imagejpeg($newimg);
认为图片应该是200*150输出。可想不到图片是100*75输出,变成:
假设输出的结果是按照 原图实际大小/($end_w/$width) 原图实际大小/($end_h/$height) 来生成的 $newimg = imagecreatetruecolor(200,150);
ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=0, $width=200,$height=150, $end_w=100,$end_h=150);
imagejpeg($newimg);
那这个例子应该是 400*150大小才对 可输出的是