2014-09-30 4 views
0

Хорошо, я думаю, что, возможно, неправильно понял функцию colorizeImage в Imagick. Im пытается добавить 70% черного цвета к изображению. Но код работает, только если его 1, а затем его просто черное изображение.php Imagick color overlay

но из руководства я не могу найти проблему. http://php.net/manual/en/imagick.colorizeimage.php

$backdropInFile = JPATH_BASE . '/images/movies/'.$_POST["movieid"].'/backdrop'.$movie['backdrop_path']; 
$backdropOutFile = JPATH_BASE . '/images/movies/'.$_POST["movieid"].'/backdrop/'.$_POST["movieid"].'_backdrop.jpg'; 
$backdropimage = new Imagick($backdropInFile); 
$backdropimage->setImageCompression(Imagick::COMPRESSION_JPEG); 
$backdropimage->setImageCompressionQuality(60); 
$backdropimage->colorizeImage('#000',0.9); 
$backdropimage->thumbnailImage(1700, null); 
$backdropimage->writeImage($backdropOutFile); 

ли кто-нибудь знает, что это неправильно, или есть другой способ сделать это?

ответ

0

Хорошо, я нашел решение проблемы, сделав это по-другому. Вот код

$backdropInFile = JPATH_BASE . '/images/movies/'.$_POST["movieid"].'/backdrop'.$movie['backdrop_path']; 
$backdropOutFile = JPATH_BASE . '/images/movies/'.$_POST["movieid"].'/backdrop/'.$_POST["movieid"].'_backdrop.jpg'; 
$backdropimage = new Imagick(); 
$backdropimage->setBackgroundColor('black'); 
$backdropimage->readimage($backdropInFile); 
$backdropimage->setImageOpacity(0.25); 
$backdropimage->setImageCompression(Imagick::COMPRESSION_JPEG); 
$backdropimage->setImageCompressionQuality(60); 
$backdropimage->thumbnailImage(1700, null); 
$backdropimage = $backdropimage->flattenImages(); 
$backdropimage->writeImage($backdropOutFile); 

я вместо него использовать раскрасить, я установить цвет фона, чтобы быть черным, прежде чем открывающимися файл. Затем я установил изображение на 25% прозрачным. И затем я сглаживаю изображение и сохраняю.

0

Раскраска работает странно. Думаю, на самом деле это векторная операция. Похоже, вы просто хотите настроить цвет, который вы можете сделать легче, рисуя цветной прямоугольник над изображением.

function colorizeImagick(Imagick $imagick, $color, $alpha = 1) { 
    $draw = new ImagickDraw(); 

    $draw->setFillColor($color); 

    if (is_float($alpha)) { 
     $draw->setFillAlpha($alpha); 
    } 

    $width = $imagick->getImageWidth(); 
    $height = $imagick->getImageWidth(); 

    $draw->rectangle(0, 0, $width, $height); 

    $imagick->drawImage($draw); 
} 
+0

ладно спасибо, я хочу, чтобы он по-другому увидел мой андерс ниже. – bymem