Функция IMagick для разрезания изображения на плитки примерно одинакового размера - PullRequest
1 голос
/ 19 января 2011

Я пытаюсь использовать оболочку PHP IMagick, чтобы помочь разделить указанное изображение на набор плиток (число которых является переменным).

В документации ImageMagick есть ссылка на оператор -crop, принимающий необязательный флаг @, который будет указывать ему разрезать изображение на "примерно равные по размеру" ( см. Здесь ) , решение проблемы, что делать, когда размер изображения не является точным кратным желаемого размера плитки.

Кто-нибудь знает, есть ли способ использовать эту функцию в оболочке PHP IMagick? Есть ли что-нибудь, что я могу использовать, кроме cropImage()?

1 Ответ

1 голос
/ 13 мая 2011

Я должен был сделать то же самое (если я правильно читаю ваш вопрос).Хотя он использует cropImage ...


function slice_image($name, $imageFileName, $crop_width, $crop_height)
{</p>

<p>$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....</p>

<p>$fileName = $dir . $imageFileName;</p>

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

<p>$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();</p>

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

}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...