2016-04-24 230 views
1

我試圖在使用imagick的圖像上獲得這種效果。在Photoshop中,它被稱爲漸變圖,但在imagick中找不到與此類似的任何東西。imagick |漸變圖

我認爲我需要先將它製成黑白色,但是我不知道如何在這樣做後添加顏色。

希望你能幫助!由於

---編輯:---

  • 我使用Imagick,不ImageMagick的。
  • 注意圖像中有兩種顏色,它不僅僅是彩色的。深藍色爲深色,淺綠色爲淺色。

enter image description here

+0

我的回答或其他人解答了您的問題嗎?如果是這樣,請考慮接受它作爲您的答案 - 通過點擊投票計數旁邊的空心綠色勾號/複選標記。如果沒有,請說出什麼不起作用,以便我或其他人可以進一步幫助您。謝謝。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

回答

5

PHP Imagick版本

現在我明白你的需要,我曾經做過一個Imagick PHP版本:

<?php 
    // Load input image 
    $image = new Imagick('landscape.jpg'); 

    // Desaturate image 
    $image->modulateImage(100,0,100); 

    // Make duotone CLUT 
    $clut = new Imagick(); 
    $clut->newPseudoImage(255,1,"gradient:darkblue-aqua"); 

    // Apply duotone CLUT to image 
    $image->clutImage($clut); 

    // Output result 
    $image->writeImage('result.jpg'); 
?> 

enter image description here

更新應答對呃

哦,我想你想一個「雙色調」而非「色調」。基本上,你需要將你的圖像去飽和度變爲單色,製作雙色調CLUT(Color Lookup Table)並應用它。

下面是如何使一個CLUT:

convert -size 1x256! gradient:navy-orange duotone-clut.png 

enter image description here

這一個顯然會令你的暗色調的海軍和你的亮點橙色,但你願意,你可以玩的顏色。如您希望與您還可以指定RGB(或HSL)的任何色調的語法,如:

convert -size 1x256! gradient:"rgb(255,255,0)-rgb(23,45,100)" ... 

這裏是如何去色圖像爲灰色,然後應用CLUT:

convert landscape.jpg -modulate 100,0 \ 
    -size 256x1! gradient:navy-orange -clut result.jpg 

-modulate需要3個參數 - 色調,飽和度和亮度。通過指定100,0我已將色相保持爲100%,並將飽和度降低至零並保持亮度不變。

enter image description here

順便說一句,如果你想要一個「全音」有3種顏色,一個影子,一個是中間色調和一個亮點,你可以做一個這樣的:

convert -size 1x1! xc:yellow xc:magenta xc:cyan +append -resize 256x1! -scale x20 clut.png 

enter image description here

其中給出這樣的:

enter image description here

您還可以在CLUT中移動交叉點,使用對比度拉伸或通過使用相同顏色填充CLUT的較大比例。在這裏,我通過有2個黃色塊來使陰影顏色「更長」

convert -size 1x1! xc:yellow xc:yellow xc:magenta xc:cyan +append -resize 256x1! clut.png 

enter image description here

這讓「長」陰影:

enter image description here

很明顯,你可以做一個四色調(四色調)了。

原來的答案

有許多的實現效果的方法。所以,從這個圖片:

enter image description here

您可以使用tint這樣,相當於tintImage()在PHP中,描述here

convert landscape.jpg -colorspace gray -fill "rgb(10,100,130)" -tint 100 result.png 

enter image description here

或者你也可以複製你的初始圖像並用您的色調填充克隆,然後將其複合到圖像頂部。你會在PHP中使用colorizeImage(),描述here

convert landscape.jpg -colorspace gray     \ 
    \(+clone -fill "rgb(10,100,130)" -colorize 100% \) \ 
    -compose overlay -composite result.png 

enter image description here

+0

哦,我很抱歉,我沒有檢查一段時間StackOverflow。感謝您的回答,但這不是我擔心的效果,而是使用Imagick,而不是像您的示例中的imagemagick。請注意,在我的示例中有兩種顏色,深藍色和淺綠色。深色轉換爲藍色,而較淺的顏色轉換爲淺綠色。 – Ronald

+0

@Ronald好的,我想我現在已經明白了。請再看一下。如果它看起來像它會做你想做的,我們可以在以後進行PHP轉換。 –

+0

非常感謝你的努力,這確實是我期待的效果!但我擔心它仍然在imagemagick,而不是imagick,這是一種不同的語言。 :) – Ronald

0

有用於PHP Imagick庫稱爲pslayers,它可以讓你做確切的那種畫面層次感和合成的,你所描述。

它甚至允許您創建接口到命令行腳本,以便直接與命令行版本交互。