Доброе утро,
Я хотел бы перейти от этого изображения:
К этому изображению:
Это 81px справа и сверху.
Я понятия не имею, как это сделать. Спасибо :).
Вы можете сделать это, используя 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');
?>
Вы можете сказать, установлен ли у вас модуль Imagick в вашем PHP с помощью:
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
библиотека, чтобы сделать то же самое — документация здесь:
<?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');
?>
Вы можете сказать, установлен ли у вас модуль GD в вашем PHP с помощью:
php -i | grep GD
Пример вывода
GD Support => enabled
GD Version => bundled (2.1.0 compatible)
В 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, и, похоже, не использует гравитацию.