Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/intervention/image/src/Intervention/Image/Imagick/Commands/ColorizeCommand.php
<?php

namespace Intervention\Image\Imagick\Commands;

use
Intervention\Image\Commands\AbstractCommand;

class
ColorizeCommand extends AbstractCommand
{
   
/**
     * Changes balance of different RGB color channels
     *
     * @param  \Intervention\Image\Image $image
     * @return boolean
     */
   
public function execute($image)
    {
       
$red = $this->argument(0)->between(-100, 100)->required()->value();
       
$green = $this->argument(1)->between(-100, 100)->required()->value();
       
$blue = $this->argument(2)->between(-100, 100)->required()->value();

       
// normalize colorize levels
       
$red = $this->normalizeLevel($red);
       
$green = $this->normalizeLevel($green);
       
$blue = $this->normalizeLevel($blue);

       
$qrange = $image->getCore()->getQuantumRange();

       
// apply
       
$image->getCore()->levelImage(0, $red, $qrange['quantumRangeLong'], \Imagick::CHANNEL_RED);
       
$image->getCore()->levelImage(0, $green, $qrange['quantumRangeLong'], \Imagick::CHANNEL_GREEN);
       
$image->getCore()->levelImage(0, $blue, $qrange['quantumRangeLong'], \Imagick::CHANNEL_BLUE);

        return
true;
    }

    private function
normalizeLevel($level)
    {
        if (
$level > 0) {
            return
$level/5;
        } else {
            return (
$level+100)/100;
        }
    }
}