IMagick功能将图像切割成大致相同大小的图块

时间:2011-01-18 22:26:54

标签: php imagemagick imagick

我正在尝试使用IMagick PHP包装器来帮助将指定的图像切割成一组图块(其数量是可变的)。

在ImageMagick文档中,引用-crop运算符接受@的可选标记,该标记将指示其将图像剪切为“大致相同大小的分区”(see here ),解决了当图像尺寸不是所需图块尺寸的精确倍数时该怎么做的问题。

有没有人知道是否有办法在IMagick PHP包装器中利用此功能?除cropImage()之外还有什么我可以使用的吗?

1 个答案:

答案 0 :(得分:1)

我必须做同样的事情(如果我正确地阅读你的问题)。虽然它确实使用cropImage ...


function slice_image($name, $imageFileName, $crop_width, $crop_height)
{

$dir = "dir where original image is stored"; $slicesDir = "dir where you want to store the sliced images; mkdir($slicesDir); //you might want to check to see if it exists first....

$fileName = $dir . $imageFileName;

$img = new Imagick($fileName); $imgHeight = $img->getImageHeight(); $imgWidth = $img->getImageWidth();

$crop_width_num_times = ceil($imgWidth/$crop_width); $crop_height_num_times = ceil($imgHeight/$crop_height); for($i = 0; $i < $crop_width_num_times; $i++) { for($j = 0; $j < $crop_height_num_times; $j++) { $img = new Imagick($fileName); $x = ($i * $crop_width); $y = ($j * $crop_height); $img->cropImage($crop_width, $crop_height, $x, $y); $data = $img->getImageBlob();

  $newFileName = $slicesDir . $name . "_" . $x . "_" . $y . ".jpg";
  $result = file_put_contents ($newFileName, $data);
}

} }