我使用Imagemagick
來處理php
中的圖像。我在ImageMagick
不明智,所以不能這樣做。我有2張圖片,1張是背景,另外1張是背景。最上面的那個是灰色的png。而背景圖像可以是任何圖像。我想設置頂部圖像的顏色以匹配背景圖像的最多顏色。設置圖像顏色以匹配背景顏色php
對於實施例,這是一個有米色/粉作爲其主要顏色
隨機背景圖像,這是我的頂部圖像
我想我的上述頂部圖像以改變其顏色以匹配最多顏色的背景圖像,如在上面的圖像中,它應該是類似於
這可能嗎?
我使用Imagemagick
來處理php
中的圖像。我在ImageMagick
不明智,所以不能這樣做。我有2張圖片,1張是背景,另外1張是背景。最上面的那個是灰色的png。而背景圖像可以是任何圖像。我想設置頂部圖像的顏色以匹配背景圖像的最多顏色。設置圖像顏色以匹配背景顏色php
對於實施例,這是一個有米色/粉作爲其主要顏色
隨機背景圖像,這是我的頂部圖像
我想我的上述頂部圖像以改變其顏色以匹配最多顏色的背景圖像,如在上面的圖像中,它應該是類似於
這可能嗎?
我不想今天編寫和調試PHP負載,但可以向您展示一些您應該能夠轉換爲PHP的命令行技巧。
您可以通過它調整到一個1x1像素,然後打印其RGB方面價值得到背景圖像的平均:
convert background.jpg -scale 1x1 -format "%[pixel:p{0,0}]" info:
srgb(219,199,164)
如果我採取這一價值並實現了堅實的方形出它,你可以看到它是一個米色像你這樣的建議:
convert -size 100x100 xc:"srgb(219,199,164)" mean.png
你或許可以使用getImageChannelStatistics() 在PHP中。
如果我現在拿的是顏色,並使其填充顏色的色調和應用色彩,我得到這個:
convert top.png -fill "srgb(219,199,164)" -tint 100% result.png
在PHP中,你會看tintImage() 。
可怕的事情發生了下來右側 - 我不明白,但如果我從上面的圖片中提取不透明度,並重新申請的結果圖像,它消失了:
convert top.png -alpha extract alpha.pgm
convert top.png -fill "srgb(219,199,164)" -tint 100% alpha.pgm -compose copyopacity -composite result.png
我已經通過這兩條線碼
exec("convert fabric.jpg -scale 1x1\! -format '%[pixel:u]' info:-", $a);
exec('convert arm-shadow.png -fuzz 10% -fill "'.$a[0].'" +opaque black -fill "'.$a[0].'" -opaque black foo.png');
@ fmw42感謝您分享您的見解和經驗,解決它自己。你知道圖像右側發生了什麼嗎?或者爲什麼我需要再次複製原始圖像的不透明度? –
對不起,我在上面Mark的評論之前意外刪除了我的評論。我剛纔說的是我推薦使用-colorspace sRGB來獲得正常(非線性)的顏色,而不是使用-colorspace RGB來獲得線性(和較暗)的顏色。 – fmw42
馬克,你簡單的色調命令(在result.png結尾)爲我工作得很好。我使用IM 6.9.8.3 Q16 Mac OSX在右側看不到任何條紋。也許是上傳過程更改圖像格式或刪除透明度。如果我刪除透明度,它會顯示條紋。請注意,您也應該始終在-compose copy_opacity之前添加-alpha off。但那是在你的處理中。 – fmw42