簡體   English   中英

PHP的Imagick的顏色覆蓋

[英]php Imagick color overlay

好吧,我想我可能誤會了Imagick中colorizeImage的功能。 我正在嘗試為圖像添加70%黑色。 但是該代碼僅在其值為1然后為黑色圖像時才有效。

但是從手冊中我似乎找不到問題。 http://php.net/manual/zh/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);

有人知道哪里出了問題,還是有另一種方法來做到這一點?

着色很奇怪。 我認為這實際上是基於向量的操作。 聽起來您只是想調整顏色,您可以通過在圖像上繪制彩色矩形來更輕松地進行調整。

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

好的,我通過另一種方式找到了解決問題的方法。 這里的代碼

$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%透明。 然后我將圖像展平並保存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM