使用 Imagick 裁剪除底部 10% 以外的所有图像

Crop all but bottom 10% of image with Imagick

我正在阅读 8.5 x 11" PDF 并创建 jpg 缩略图。

我想裁剪掉图像底部大约 10% 的部分。 (基本上只想要最后的页脚)

$pdf_file   = $file;
$save_to = 'bottom.jpg';
$img = new imagick();
$img->setResolution(300,300);
$img->readImage("{$pdf_file}[0]");
$img->scaleImage(800,0);
$img->setImageFormat('jpg');
$img = $img->flattenImages();
$img->cropImage(0,0,0,350);
$img->writeImages($save_to, false);

echo '<img src="bottom.jpg">';

上述代码的输出生成了一个显示页脚的 jpg,但图像为 800px W X 685px H,页脚顶部为白色 space。

我只想要 800px W X 大约 200px H 的页脚。

我不确定为什么要将零传递给裁剪函数 3 次。参数应该是:

  • width - 裁剪的宽度
  • height - 作物的高度
  • x - 裁剪区域左上角的 X 坐标
  • y - 裁剪区域左上角的 Y 坐标

所以这应该可以满足您的要求:

$img->cropImage(
    $image->getImageWidth(),
    350, 
    0,
    $image->getImageHeight() - 350
);