[英]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.