你可以在命令行中簡單地做到這一點,ImageMagick它安裝在大多數Linux發行版上,可在OSX和Windows上免費獲得。
「祕密醬」是-fx
運營商 - 描述here。
所以,讓我們產生一個安全工程師黑色圖像,然後使用-fx
使得紅色根據我們是從左側(i
)哪些部分的寬度(w
)的整個圖像變化來計算紅色通道:
convert -size 300x200 xc:black -channel R -fx 'i/w' result.png
注意,我生成的圖像「上即時」與-size 300x200 xc:black
,而如果你有在它的動畫幀PNG文件,你可以把中,在其頁碼花邊。
現在讓我們說,我們要改變不透明度/阿爾法太 - 根據來自頂部的距離縮小圖像:
convert -size 300x200 xc:black -alpha on \
-channel R -fx 'i/w' \
-channel A -fx 'j/h' result.png
好了,就快了...你功能更復雜一點,這樣,而不是命令行,每次上打字的話,我們可以把它放在一個腳本文件名爲RGB2Opacity.fx
這樣的:
convert -size 300x200 xc:black -alpha on -channel A -fx @RGB2Opacity.fx result.png
其中RGB2Opacity.fx
簡單,看起來像這樣的時刻:
0.2
現在我們需要把你的「參考」像素在命令行中與您的動畫框架,使ImageMagick的可以計算出差異。這意味着你的實際的命令行看起來或多或少酷似如下:
convert -size 300x200 xc:"rgb(250,251,245)" YourImage.png -alpha on -channel A -fx @RGB2Opacity.fx result.png
然後我們需要實現你在-fx
腳本文件公式。您的變量名稱必須至少有2個字母,並且其中沒有數字,並且您應該爲不透明度返回單個值。變量都在[0,1.0]之間縮放,所以你的255縮放比例有些不同。我沒有樣本圖像,我不肯定的答案應該如何看,但它會很接近這個:
MM=1/pow(3,0.5);
pmasq=pow((u.r-v.r),2.0);
qmbsq=pow((u.g-v.g),2.0);
rmcsq=pow((u.b-v.b),2.0);
1-MM*pow((pmasq+qmbsq+rmcsq),0.5)
我不知道是否/如何把意見在-fx
腳本,因此我將解釋變量名以下:
現在讓我們來創建動畫幀:
convert xc:"rgb(250,251,245)" xc:"rgb(250,250,250)" xc:"rgb(30,255,22)" xc:"rgb(234,250,0)" +append frame.png
,並檢查它看起來是正確的:
convert frame.png txt:
輸出
# ImageMagick pixel enumeration: 4,1,65535,srgb
0,0: (64250,64507,62965) #FAFBF5 srgb(250,251,245)
1,0: (64250,64250,64250) #FAFAFA grey98
2,0: (7710,65535,5654) #1EFF16 srgb(30,255,22)
3,0: (60138,64250,0) #EAFA00 srgb(234,250,0)
如果我們應用,爲您的形象和檢查結果,你可以看到我已經得到了它稍有不妥的地方,butI'll離開你(或其他一些耀眼的火花)的工作說出來......
convert -size 4x1 xc:"rgb(250,251,245)" frame.png -alpha on -channel A -fx @RGB2Opacity.fx result.png
convert result.png txt:
# ImageMagick pixel enumeration: 4,1,65535,srgba
0,0: (64250,64507,62965,65535) #FAFBF5FF srgba(250,251,245,1)
1,0: (64250,64507,62965,64764) #FAFBF5FC srgba(250,251,245,0.988235)
2,0: (64250,64507,62965,19018) #FAFBF54A srgba(250,251,245,0.290196)
3,0: (64250,64507,62965,29041) #FAFBF571 srgba(250,251,245,0.443137)
你似乎有涉及數學的處理,什麼是掛斷?這不是一個代碼寫入服務。 –
不,我知道,這只是我不知道如何實際執行它。我只是在Matlab中完成了編碼的基礎知識,所以我完全失敗了。 –
聽起來很有意思...如何處理一些示例圖像? –