【发布时间】:2015-11-18 12:09:14
【问题描述】:
我正在尝试在PHP 上裁剪图像。我看到PHP:imagecrop 上有一个功能可以做到这一点。这是我尝试裁剪图像的代码。
$image = imagecreatefromjpeg(//Path of the image);
$croppedImage = imagecrop($image, array("x"=>0,"y"=>0,"width"=>100,"height"=>100));
imagejpeg($croppedImage, //Path in which the image will be stored);
在这里,我希望图像的裁剪从图像的左角开始,并获得我放在上面的宽度和高度值。
但它只是调整我的图像大小,而不是裁剪它。我做错了什么?
编辑:
我也尝试了函数imagecopyresampled。这是我尝试过的:
dst_image(Destination image link resource) = newImage; //Here the new image that I want to create.
src_image(Source image link resource) = image; //Here the original image.
//Here 0,0 because I want that the new image crop starts in the left corner of the original image.
dst_x(x-coordinate of destination point) = 0;
dst_y(y-coordinate of destination point) = 0;
//Here 0,0 because I want that the crop starts on the 0,0 of the original image
src_x(x-coordinate of source point) = 0;
src_y(y-coordinate of source point) = 0;
dst_w(Destination width) = 150; //The new width of the crop image.
dst_h(Destination height) = 150; //The new height of the crop image.
src_w(Source width) = 500; //The original width of the image.
src_h(Source height) = 500; //The original height of the image.
所以最后函数会是这样的:
$b = imagecopyresampled ($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w , $dst_h , $src_w , $src_h );
我只是在这个函数中遇到问题,这就是为什么要避免其余部分(保存和 imagetruecolor 以及其余部分......)
这个函数给了我预期的结果,但新图像是黑色的,为什么?
提前致谢!
【问题讨论】:
-
您在此处向我们展示的代码应该给出您正在寻找的结果,而不是您描述的结果(前提是图像大于 100x100)。我建议您检查您的方法。
-
@symcbean 我不明白你的意思。在这里,我以 100x100 为例(图像比 100x100 更大),但在我的真实代码中,我使用变量动态地使用它。这里我只是简化一下。