Home >Backend Development >PHP Tutorial >ImageCopyResampled 扭结了狠久,求高手援助

ImageCopyResampled 扭结了狠久,求高手援助

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-13 11:05:17883browse

ImageCopyResampled 纠结了狠久,求高手援助。
测试代码:

 $createImg  = ImageCreateFromjpeg('x.jpg'); //图片大小为200*150<br /> $newimg     = imagecreatetruecolor(200,150);<br /> ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=0, $width=200,$height=150, $end_w=200,$end_h=150); <br /> 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);  <br />ImageCopyResampled($newimg,$createImg,0,0, $start_w=0, $start_h=24.5, $width=100,$height=75, $end_w=200,$end_h=150)<br />

生成图片是原图往上 24.5再压, 下方多余的24.5被画布大小局限挡住不可见;达到了预期的目标。不知这种实现方式是否正确。
效果图:

压了成为 100*75   在通过75/2  计算出两边截12.5 应该是一样的,不知可否实现。

刚接触这个函数不久,大家多提提意见;越啰嗦越好阿。先谢谢大家了!

------解决方案--------------------
你先将 将原图放大到 这个说法去掉
这个说法只会误导你

原图只有 200*150
那么 (201, 1) 必然在图的外边
图并没有变大,只是你在图外取值

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn