php Imagick цветное наложение

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

но из руководства я не могу найти проблему.
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

Решение

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

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

Другие решения

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

$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);

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

0

По вопросам рекламы [email protected]