Php 如何使用带有Imagick的jQuery断头台插件中的数据裁剪图像

Php 如何使用带有Imagick的jQuery断头台插件中的数据裁剪图像,php,image,crop,imagick,Php,Image,Crop,Imagick,我已经到处找了两天了,仍然没有任何帮助 我的项目允许用户在上传到我的php服务器之前选择图像大小和位置,但我无法根据从前端接收到的数据找出裁剪和缩放图像的正确方法 以下是我尝试过的: 我尝试处理的响应如下所示: { scale: 0.324, angle: 0, x: 110, y: 34, w: 300, h: 300 } 然后,php代码: $imagick = Image::make($destination . "/" . $fileName); $height = $imagick-

我已经到处找了两天了,仍然没有任何帮助

我的项目允许用户在上传到我的php服务器之前选择图像大小和位置,但我无法根据从前端接收到的数据找出裁剪和缩放图像的正确方法

以下是我尝试过的:

我尝试处理的响应如下所示:

{ scale: 0.324, angle: 0, x: 110, y: 34, w: 300, h: 300 }
然后,php代码:

$imagick = Image::make($destination . "/" . $fileName);
$height = $imagick->height();
$width = $imagick->width();

$imagick->rotate($req['angle']);
//using the data recieved after user selection
$imagick->cropImage((int)$req['w'], (int)$req['h'], (int)$req['x'], (int)$req['y']);
//Write image to disk
$imagick->save($destinationPathSmaller . $fileName);
此时,图片无法正确显示。我真的不知道该怎么办,这是我的第三天了。请帮忙


感谢您的帮助,

我不确定这是否只是复制和粘贴的不同,但我认为这可能是对库的简单误用

一个人。你有这一行:

$imagick = new Image($destination . "/" . $fileName);
但是他们建议你使用

$imagick = Image::make($destination . "/" . $fileName);
两者之间的区别在于,如果您只需调用
新图像
,驱动程序将无法设置。因此,crop方法只是从他们拥有的AbstractDriver类中跳出,什么也不做。但是你可以调用
Image::make
,它会的


如果情况并非如此,那么我还注意到您正在使用
writeImage
。基于更改创建文件的方法是。我在任何地方都找不到方法
writeImage

我不确定这是否只是复制和粘贴的不同,但我认为这可能是对库的简单误用

一个人。你有这一行:

$imagick = new Image($destination . "/" . $fileName);
但是他们建议你使用

$imagick = Image::make($destination . "/" . $fileName);
两者之间的区别在于,如果您只需调用
新图像
,驱动程序将无法设置。因此,crop方法只是从他们拥有的AbstractDriver类中跳出,什么也不做。但是你可以调用
Image::make
,它会的


如果情况并非如此,那么我还注意到您正在使用
writeImage
。基于更改创建文件的方法是。我在任何地方都找不到方法
writeImage

好的,所以我终于让它工作了

我感谢所有试图帮助我的人,以下是我在其他人面临同样问题时所做的:

使用和Imagick作为驱动程序

从API收集数据后,对其进行处理并像这样使用

$imagick = Image::make($destination . "/" . $fileName);
$width = $imagick->width() * $req['scale'];

$imagick->rotate($req['angle']);
$imagick->widen($width);

//Crop to desired width and height. 
//Note: the width and height has to be same with what you set on your Guillotine config when instantiating it. 
$imagick->crop($req['w'], $req['h'], $req['x'], $req['y']);

//Finally, Save your file
$imagick->save($new_destination . $fileName);

那应该很好用。

好的,我终于让它工作了

我感谢所有试图帮助我的人,以下是我在其他人面临同样问题时所做的:

使用和Imagick作为驱动程序

从API收集数据后,对其进行处理并像这样使用

$imagick = Image::make($destination . "/" . $fileName);
$width = $imagick->width() * $req['scale'];

$imagick->rotate($req['angle']);
$imagick->widen($width);

//Crop to desired width and height. 
//Note: the width and height has to be same with what you set on your Guillotine config when instantiating it. 
$imagick->crop($req['w'], $req['h'], $req['x'], $req['y']);

//Finally, Save your file
$imagick->save($new_destination . $fileName);

这应该可以很好地发挥作用。

在这个过程中,您在哪一部分遇到了故障?1.他们选择了一个图像。2.)他们会更改其上的设置。3.)他们发布带有设置的图像。4.)保存文件。这是第4点。)当我要保存文件时,我不知道如何裁剪数据,使其与用户选择的数据完全一致。您在
$req
数组中得到的值是什么?另外,我只是好奇。这是PHP中的
Imagick
类派生的
Image
类吗?它的
crop
方法的工作原理是否与
cropImage
相同?是的,
crop
方法来自php干预,它使用
Imagick
作为驱动程序。我从前端得到的值看起来像:{scale:1.4,angle:270,x:10,y:20,w:900,h:675}`在这个过程中的哪个部分发生了故障?1.他们选择了一个图像。2.)他们会更改其上的设置。3.)他们发布带有设置的图像。4.)保存文件。这是第4点。)当我要保存文件时,我不知道如何裁剪数据,使其与用户选择的数据完全一致。您在
$req
数组中得到的值是什么?另外,我只是好奇。这是PHP中的
Imagick
类派生的
Image
类吗?它的
crop
方法的工作原理是否与
cropImage
相同?是的,
crop
方法来自php干预,它使用
Imagick
作为驱动程序。我从前端得到的值如下:`{scale:1.4,angle:270,x:10,y:20,w:900,h:675}`这是问题中的一个错误,我使用的是:
$imagick=Image::make($destination./”$fileName)
但目前我没有任何php错误,只是我的图像没有按照我想要的方式调整大小。我在使用时使用
writeImage
保存图像(不在文档中,但有效)。我不知道。我唯一能想到的另一件事是图像魔法没有正确配置。但是旋转也不会起作用。这是问题中的一个错误,我使用的是:
$imagick=Image::make($destination./“$fileName)
但目前我没有任何php错误,只是我的图像没有按照我想要的方式调整大小。我在使用时使用
writeImage
保存图像(不在文档中,但有效)。我不知道。我唯一能想到的另一件事是图像魔法没有正确配置。但那样的话,轮换也不会起作用。