Imagick::clipPathImage

(PECL imagick 2, PECL imagick 3)

Imagick::clipPathImageОтсечь вдоль обозначенного контура с профилем 8BIM

Описание

public Imagick::clipPathImage(string $pathname, bool $inside): bool

Отсекает изображение вдоль обозначенного контура с профилем 8BIM, если он предоставлен. Последующие операции будут применяться к внутреннему контуру. Так же может быть числом, если ему предшествует символ #. Это необходимо для работы с пронумерованными контурами, например, "#1" для использования первого контура.

Список параметров

pathname

Обозначенный контур

inside

Если установлено true, то последующие операции будут применяться к внутреннему контуру. Иначе, последующие операции будут применяться к внешнему контуру.

Возвращаемые значения

Функция в случае успешной работы возвращает true.

Ошибки

Функция выбрасывает исключение ImagickException, если возникла ошибка.

Добавить

Примечания пользователей 1 note

up
1
Coleman Nitroy
17 years ago
I found Imagick::clipPathImage and Imagic::clipImage did not work as I had expected. I thought they would just clip the path and throw away the extra data and you are done. Not the case. Here is how I was able to use a clipping path:<?php      $img = new Imagick("/Path/To/Test/Image.psd");      $geometry = $img->getImageGeometry();      // Uses the first path as the clipping path      $img->clipPathImage("#1", false);      // Fill the clipped part with a color      $draw = new ImagickDraw();      $draw->setFillColor("#000000");      $draw->color(0,0, imagick::PAINT_RESET);      $img->drawImage($draw);      // Composite the clipped image with the old image. Set the color of the composite to any color you want to be the outside part.      $composite = new Imagick($path);      $composite->newImage( $geometry['width'], $geometry['height'], new ImagickPixel("white"), 'png');      $composite->compositeImage($img, imagick::COMPOSITE_COPY, 0, 0);?>Then doing any resizing or creating thumbnails from the resulting image  disregarded all the previous commands so I "saved" it and started with a new Imagick object<?php      // Copy the image so clip is "saved"      $clipped = new Imagick();      $clipped->readImageBlob($composite->getImageBlob());?>I'm sure there is a simpler way, but this took me awhile to get right and there were some hurdles to cross so I hope it is able to help someone on the way.This is all the convert equivalent of:$ convert Test.psd -fill white -colorspace rgb -draw "color 0 0 reset" -clip -colorspace rgb -draw "Image Copy 0,0 0,0 'Test.psd'" OutputFile.png
To Top