2014-09-30 3 views
0

좋아, 아마 Imagick에서 colorizeImage의 기능을 잘못 이해했다고 생각해. 이미지에 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); 

I의 대신, 내가 파일을 여는 중 전에 검은 색의 배경 색상을 설정합니다. 그럼 내가 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