Интересно, как раскрасить изображение в Imagick, как в GD? Поэтому я ищу Imagick-эквивалент этого:
class MyIMG {
public function __construct($pathToIMG=''){
$this->img = imagecreatefrompng($pathToIMG);
}
public function colorize($color=''){
// if $color input is HEX turn it into RGB array
if( !is_array($color) ){
list($r,$g,$b) = sscanf($color, "#%02x%02x%02x");
$color = [$r,$g,$b];
}
$rgb = $color ?: [0,0,0];
$rgb = [ 255-$rgb[0], 255-$rgb[1], 255-$rgb[2] ];
imagefilter($this->img, IMG_FILTER_NEGATE);
imagefilter($this->img, IMG_FILTER_COLORIZE, $rgb[0], $rgb[1], $rgb[2]);
imagefilter($this->img, IMG_FILTER_NEGATE);
imagealphablending( $this->img, false );
imagesavealpha( $this->img, true );
imagepng( $this->img );
}
public function img(){
return $this->img;
}
}
Я использую его так:
header('Content-Type: image/png');
$img = new MyLib('path/to/image.png');
$img->colorize('#FF0000');
$img->img();
Есть ли способ с помощью Imagick?
Спасибо за вашу помощь!