Вход Регистрация
Файл: system/vendor/intervention/image/src/Intervention/Image/Imagick/Commands/LimitColorsCommand.php
Строк: 53
<?php

namespace InterventionImageImagickCommands;

use 
InterventionImageCommandsAbstractCommand;

class 
LimitColorsCommand extends AbstractCommand
{
    
/**
     * Reduces colors of a given image
     *
     * @param  InterventionImageImage $image
     * @return boolean
     */
    
public function execute($image)
    {
        
$count $this->argument(0)->value();
        
$matte $this->argument(1)->value();

        
// get current image size
        
$size $image->getSize();

        
// build 2 color alpha mask from original alpha
        
$alpha = clone $image->getCore();
        
$alpha->separateImageChannel(Imagick::CHANNEL_ALPHA);
        
$alpha->transparentPaintImage('#ffffff'00false);
        
$alpha->separateImageChannel(Imagick::CHANNEL_ALPHA);
        
$alpha->negateImage(false);

        if (
$matte) {

            
// get matte color
            
$mattecolor $image->getDriver()->parseColor($matte)->getPixel();

            
// create matte image
            
$canvas = new Imagick;
            
$canvas->newImage($size->width$size->height$mattecolor'png');

            
// lower colors of original and copy to matte
            
$image->getCore()->quantizeImage($countImagick::COLORSPACE_RGB0falsefalse);
            
$canvas->compositeImage($image->getCore(), Imagick::COMPOSITE_DEFAULT00);

            
// copy new alpha to canvas
            
$canvas->compositeImage($alphaImagick::COMPOSITE_COPYOPACITY00);

            
// replace core
            
$image->setCore($canvas);

        } else {

            
$image->getCore()->quantizeImage($countImagick::COLORSPACE_RGB0falsefalse);
            
$image->getCore()->compositeImage($alphaImagick::COMPOSITE_COPYOPACITY00);

        }

        return 
true;

    }
}
Онлайн: 0
Реклама