使用php脚本裁剪图像

时间:2018-07-14 13:52:50

标签: php image function png crop

早上好, 我想从这张图片开始:

Original image

此图片:

enter image description here

从右上角开始是81px。

我不知道该怎么做。谢谢:)。

2 个答案:

答案 0 :(得分:1)

您可以使用iMagick方法cropImage()来做到这一点:

<?php
   // Load input image
   $image = new Imagick('weather.png');

   // Get width and height
   $w= $image->getImageWidth();
   $h= $image->getImageHeight();

   // cropImage(width,height,startx,starty)
   $image->cropImage($w-81,$h-81,0,81);

   // Output result
   $image->writeImage('result.png');
?>

您可以通过以下方法判断PHP中是否安装了Imagick模块:

php -i | grep magick

示例输出

/usr/local/etc/php/7.2/conf.d/ext-imagick.ini,
imagick
imagick module => enabled
imagick module version => 3.4.3
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 7.0.7-35 Q16 x86_64 2018-05-25 https://www.imagemagick.org
Imagick using ImageMagick library version => ImageMagick 7.0.7-35 Q16 x86_64 2018-05-25 https://www.imagemagick.org
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0
imagick.skip_version_check => 0 => 0

或者,您可以使用GD库执行相同的操作-documentation here

<?php
   // Load input image
   $im = imagecreatefrompng('weather.png');

   // Get width and height
   $w  = imagesx($im);
   $h  = imagesy($im);

   // Crop
   $im = imagecrop($im, ['x'=>0, 'y'=>81, 'width'=>$w-81, 'height'=>$h-81]);
   imagepng($im, 'result.png');
?>

您可以通过以下方法判断PHP中是否安装了GD模块:

php -i | grep GD 

示例输出

GD Support => enabled
GD Version => bundled (2.1.0 compatible)

答案 1 :(得分:0)

在Imagemagick中,另一种方法是简单地切掉顶部的81个像素和右侧的81个像素。所以

convert image -gravity north -chop 0x81 -gravity east -chop 81x0 result

我不知道Imagick,但chop命令位于http://us3.php.net/manual/en/imagick.chopimage.php。但是,那里的文档看起来不像Imagemagick那样工作,并且似乎没有使用重力。