Как раскрасить изображение с помощью Imagick, используя PHP? - PullRequest
0 голосов
/ 10 марта 2020

Интересно, как раскрасить изображение в 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?

Спасибо за вашу помощь!

...