PHP Doku:: Changes any pixel that matches color with the color defined by fill - function.imagick-painttransparentimage.html

Verlauf / Chronik / History: (1) anzeigen

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

Ein Service von Reinhard Neidl - Webprogrammierung.

The Imagick class

<<Imagick::paintOpaqueImage

Imagick::pingImage>>

Imagick::paintTransparentImage

(PECL imagick 2.0.0)

Imagick::paintTransparentImageChanges any pixel that matches color with the color defined by fill

Beschreibung

bool Imagick::paintTransparentImage ( mixed $target , float $alpha , float $fuzz )
Warnung

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

Changes any pixel that matches color with the color defined by fill.

Parameter-Liste

target

Change this target color to specified opacity value within the image.

alpha

The level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.

fuzz

The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.

Rückgabewerte

Liefert TRUE bei Erfolg.

Fehler/Exceptions

Wirft ImagickException bei Fehlern.

Changelog

Version Beschreibung
2.1.0 Now allows a string representing the color as the first parameter. Previous versions allow only an ImagickPixel object.


2 BenutzerBeiträge:
- Beiträge aktualisieren...
Anonymous
6.03.2009 17:11
Actually it does seem to work just not the way expected perhaps.

Looking at the fuzz option on ImageMagick's site (http://www.imagemagick.org/script/command-line-options.php#fuzz), "The distance can be in absolute intensity units or, by appending % as a percentage of the maximum possible intensity (255, 65535, or 4294967295)."

As it requires a float, the percentage value won't work so it actually one of the max intensity values.  In my case, the images I was working with seemed to have max intensity values of 65535.  So a fuzz of 6500, for roughly 10%, seemed to do the trick.

The part that might be problematic though is how do you determine the max intensity of a color/image?  Using a static 6500 would be fine until I would have to convert an image with a max intensity other than 65535.  If it's 255 it would wipe the entire image.  Or fall far short on the fuzz with the larger value.
paziek at gmail dot com
13.02.2009 15:53
Fuzz attribute doesn't work here.

#!/usr/bin/php
<?php

if(!isset($argv[1])) die("input file\n");

$im = new Imagick( $argv[1] );
$im->paintTransparentImage('rgb(246,241,230)', 0.0, 10);

file_put_contents('transparent_'.$argv[1], $im);
?>

Will "remove" only colors that match exactly rgb(246,241,230)



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",...)