Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Imagemagick裁剪命令未给出完美的结果_Php_Imagemagick - Fatal编程技术网

Php Imagemagick裁剪命令未给出完美的结果

Php Imagemagick裁剪命令未给出完美的结果,php,imagemagick,Php,Imagemagick,我正在使用Imagemagick调整大小和裁剪图像 测试图像: 我需要将其重新调整为300 x 320帧。首先,我正在调整图像大小,然后对其进行裁剪,并使用以下命令: exec("convert /uploadImagePath -thumbnail 300 /newImagePath"); exec("convert /newImagePath -gravity Center -crop 290x310+0+0 /newImagePath");

我正在使用Imagemagick调整大小和裁剪图像

测试图像:

我需要将其重新调整为300 x 320帧。首先,我正在调整图像大小,然后对其进行裁剪,并使用以下命令:

exec("convert /uploadImagePath -thumbnail  300  /newImagePath");

exec("convert /newImagePath -gravity Center -crop 290x310+0+0 /newImagePath");
但它给了我以下的印象

正如你们所看到的,这张图片并不完整。我哪里弄错了?

试试:

$inputFile = "WPTgp.jpg";
exec("convert {$inputFile} -resize 290x310^ -gravity Center -crop 290x310+0+0 picCropped.png");
希望这对您有所帮助(答案已更新,下面提供了一个关于液体重缩放的示例)


原始图像的尺寸为:

489 x 640 pixels
您想要的维度似乎是:

290 x 310 pixels
如果没有以下任一项,则无法缩放到这些尺寸:

  • 裁剪(不要保留初始图像的所有区域)
  • 保持所需宽度(放弃所需高度)
  • 保持所需高度(放弃所需宽度)
  • 失真(缩放时不保持纵横比)
  • 填充(向一条或多条边添加更多像素)
  • 移除不明显的像素(“液体重缩放”或“接缝雕刻”-)
  • 您的结果显示“1”。(裁剪),这是您不喜欢的。所以您有选项“2”。(保持宽度),“3”。(保持高度),“4”。(变形),“5”。(填充)和“6”。(接缝雕刻)有待测试

    “2”:保持所需高度 结果图像的尺寸为
    237 x 310像素

    保持高度….

    (自动确定宽度)

    “3”:保持所需的宽度 结果图像的尺寸为290 x 380像素
    保持宽度….

    (自动确定高度)

    “4”:失真 结果图像的尺寸为
    290 x 310像素

    失真……

    (忽略纵横比——如果需要,则扭曲图像以适合尺寸)

    “5.”:填充 结果图像的尺寸为290 x 310像素。(添加橙色背景只是为了证明图像的“延伸”确实有效。)
    填充………

    (保持纵横比--根据所需尺寸扩展图像)

    “6”:接缝雕刻

    以上是您从快速阅读ImageMagick命令选项参考中自发派生的命令。但是,它不起作用,我使用了:

    convert WPTgp.jpg -liquid-rescale 599x640\! -scale 290x310 liquid.jpg
    convert WPTgp.jpg -liquid-rescale 599x640\! -scale 48.4%   liquid.jpg
    
    下面进一步解释了我为什么需要修改它……
    液体重新缩放

    抱歉--我现在无法提供示例图片;这需要安装额外的ImageMagick delegate
    liblqr
    (液体重缩放库),目前我还没有这个功能)我现在有机会创建原始图像的“液体重缩放”版本


    关于接缝雕刻的注意事项“-液体重缩放”: 如上所述,最后一个图像不是我最初提出的命令的结果,而是这两个修改版本中的一个:

    convert WPTgp.jpg -liquid-rescale 599x640\! -scale 290x310 liquid.jpg
    convert WPTgp.jpg -liquid-rescale 599x640\! -scale 48.4%   liquid.jpg
    
    请记住,我们有一个489x610像素的原始图像,我们希望将其缩放到290x310像素。但是,液体重缩放并不擅长同时在两个维度上重缩放——它的设计目的是只向一个方向(水平或垂直)缩放。如果你试图同时做这两件事,结果可能不是你所期望的。以下是最初建议的命令的结果:

     convert WPTgp.jpg -liquid-rescale 290x310\! liquid.jpg
    
    LQR出错了

    这就是为什么我提出了两个经过修改的命令,它们分两步工作:

  • 首先,仅对水平维度应用液体重缩放,将原稿的宽度从489像素扩展到599像素
  • 其次,对中间结果应用“正常”纵横比保持缩放以生成最终图像

  • 我在本地机器上安装了ImageMagick 6.7.6-9,上面的命令给了我完美的结果,但当我将它上传到ImageMagick 6.6.0-4版本的服务器上时,结果与本地机器不一样。你知道吗?@Muhammad Umair:我真的不明白为什么这是公认的答案。它没有按照问题的要求工作——它确实裁剪了图像,而且做得非常糟糕@穆罕默德迈尔请接受这个精心设计的答案
    convert WPTgp.jpg \
       -resize 290x310 \
       -gravity center \
       -background orange \
       -extent 290x310 \
        padded.jpg
    
    convert WPTgp.jpg -liquid-rescale 290x310\! liquid.jpg
    
    convert WPTgp.jpg -liquid-rescale 599x640\! -scale 290x310 liquid.jpg
    convert WPTgp.jpg -liquid-rescale 599x640\! -scale 48.4%   liquid.jpg
    
    convert WPTgp.jpg -liquid-rescale 599x640\! -scale 290x310 liquid.jpg
    convert WPTgp.jpg -liquid-rescale 599x640\! -scale 48.4%   liquid.jpg
    
     convert WPTgp.jpg -liquid-rescale 290x310\! liquid.jpg