2014-09-30 98 views
0

好吧,我想我可能misundertode在Imagick colorizeImage的功能。我試圖爲圖像添加70%的黑色。但是,代碼只適用於其1,然後它只是一個黑色的圖像。php Imagick顏色疊加

但從手冊我似乎無法找到問題。 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

好的,謝謝,我想通過它另一種方式見下面我的anwser。 – bymem 2014-10-16 07:02:31