PHP Doku:: Clips along the named paths from the 8BIM profile - function.imagick-clippathimage.html

Verlauf / Chronik / History: (3) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzBildverarbeitung und -generierungImage Processing (ImageMagick)The Imagick classImagick::clipPathImage

Ein Service von Reinhard Neidl - Webprogrammierung.

The Imagick class

<<Imagick::clipImage

Imagick::clone>>

Imagick::clipPathImage

(PECL imagick 2.0.0)

Imagick::clipPathImageClips along the named paths from the 8BIM profile

Beschreibung

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

Diese Funktion ist bis jetzt nicht dokumentiert. Es steht nur die Liste der Argumente zur Verfügung.

Clips along the named paths from the 8BIM profile, if present. Later operations take effect inside the path. It may be a number if preceded with #, to work on a numbered path, e.g., "#1" to use the first path.

Parameter-Liste

pathname

The name of the path

inside

If TRUE later operations take effect inside clipping path. Otherwise later operations take effect outside clipping path.

Rückgabewerte

Liefert TRUE bei Erfolg.

Fehler/Exceptions

Wirft ImagickException bei Fehlern.


Ein BenutzerBeitrag:
- Beiträge aktualisieren...
Coleman Nitroy
14.03.2008 14:15
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



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)