通过php文件裁剪图像

通过php文件裁剪图像,php,image,crop,Php,Image,Crop,所以我有一张图片,原来是1696x1696。我想使用一个php文件来MIME一个png文件。我想要php做的是裁剪原始文件并生成四分之一的图像。稍后我计划使用$\u GET variables返回我想要的象限,但是对于测试/调试,我的目标只是得到左上象限 代码如下: Header("Content-type:image/png"); $newImg =imagecreatefrompng('test.png'); //manually entered half height and widt

所以我有一张图片,原来是1696x1696。我想使用一个php文件来MIME一个png文件。我想要php做的是裁剪原始文件并生成四分之一的图像。稍后我计划使用$\u GET variables返回我想要的象限,但是对于测试/调试,我的目标只是得到左上象限

代码如下:

Header("Content-type:image/png");
$newImg =imagecreatefrompng('test.png'); 

//manually entered half height and width
$img=imagecreatetruecolor(848,848);
//here is where the bugs keep flawing the image
imagecopyresampled($img,$newImg,0,0,0,0,1696,1696,1696,1696);
imagepng($img); 
imagedestroy($img);

这将产生图像(顶部,左侧),就像它应该的那样,但是它会在其顶部添加几个较小的重采样图像。不管我怎么玩弄它,我都做不好。我也尝试过imagecopy(),但也无法正确执行。查阅了教程,我似乎找不到有帮助的地方。

好的,在做了足够多的头部撞击和头发撕裂后,我决定回到photoshop,用我原来的.psd覆盖.png。现在开始有进展了。我的象限没有那么可笑。当我更好地理解时,我可能会回来解释我一直出错的地方

您的代码看起来很好。在这个用例中,我唯一要改变的是使用
imagecopyresized()
而不是
imagecopyresampled()

Header("Content-type:image/png");
$source = imagecreatefrompng('images/test.png'); 

// manually entered half height and width
$thumb  = imagecreatetruecolor(848,848);

imagecopyresized($thumb, $source, 0, 0, 0, 0, 1696, 1696, 1696, 1696);
imagepng($thumb); 
imagedestroy($thumb);
我猜在你之前的测试中,你覆盖了你的原始图像。这就解释了

然而,它添加了几个较小的重采样图像在它的顶部


…这是你经历的一部分。每次运行代码时,您都会选择以前修改过的文件。

就是这样!一旦我恢复了原作的原样,“裁剪”的图像就就位了。在手动输入我想要的象限后,我返回并设置它,以便$\u GET变量指定我想要返回的象限。这是为了创建一个传单地图,利用一个大图片来创建瓷砖。我希望php按照地图的要求进行瓷砖切割。我最终只是使用imagecopy()函数来实现它。imagecopyresize()就是我安装了错误并最初弄乱了.png文件的那个。好消息!如果您可以使用PHP5.5,那么使用imagecrop()可以使事情更加简化