国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

javascript - 如何使用Canvas改變素材的顏色?

瀏覽:108日期:2022-11-05 09:28:33

問題描述

我在知乎中看到一則提問是關于使用色盤來改變人物顏色的,這里是鏈接引用該提問的一張圖片javascript - 如何使用Canvas改變素材的顏色?

里面的人物僅僅是著裝不同,但膚色是相同的,原文提到是使用了色盤來實現(xiàn)的,但太專業(yè)看得不是很懂,請問如何使用Canvas實現(xiàn)色盤來改變素材的局部顏色呢?非常感謝~

補充:這張圖片是用GameMaker處理過的,Canvas有方法處理這樣的圖片嗎?javascript - 如何使用Canvas改變素材的顏色?

問題解答

回答1:

因為早期卡帶內存有限,所以,如果直接存圖片的話,一張卡帶光角色圖片就能塞滿了。由于位圖是有點陣組成的,每個點(也就是每個像素)都有它自己的顏色。在早期卡帶機上,能用到的顏色其實并不多,所以才有了色盤。(經常用PS的應該知道色盤這個東西)也就是,將一幅圖上所有用到的顏色編號,存儲成一個控制了容量大小的色盤(比如一張傳統(tǒng)的二維碼圖,其實只要存兩種顏色就可以了)。然后在存儲圖片的時候,原本對應點陣的存儲需要記錄紅綠藍通道的值,而用色盤之后,直接用色盤中的序號代替對應的顏色,這樣因為序號存儲空間比紅綠藍數(shù)據(jù)占用空間少,而且色盤可以復用(只要對應顏色在色盤里存在,就可以用序號替代顏色),所以就間接節(jié)省了卡帶的空間。

而由于存儲的時候,是只存儲了色盤里的序號,所以只要改變色盤里對應序號的顏色,就可以使圖片中對應序號的顏色發(fā)生變化。

由于Canvas中,都是真彩色,而且因為計算機存儲的迅速發(fā)展,現(xiàn)在的電腦存儲空間也遠沒有之前卡帶中那么拮據(jù)了,所以,在Canvas里,是不存在色盤的。但是,知道了色盤的原理之后,其實你也很好想到模擬色盤的處理方案。由于色盤用編號替代顏色,也就是說,替換了色盤里的一種顏色就替換了圖片里所有顏色值等于該顏色的區(qū)域。所以根據(jù)這個思路,你要做的就是把圖片里所有顏色值等于某個值的顏色都替換掉,代碼我就不具體寫了,這里給個鏈接,希望可以得到啟發(fā):http://www.deanhan.cn/canvas-...

另外,畫盤替換方案,針對之前卡帶游戲8位的圖像比較容易,因為顏色區(qū)分度大;但是對于現(xiàn)有的真彩色位圖而言,這個難度就大了很多,因為現(xiàn)在的位圖里很可能出現(xiàn)區(qū)分度很小的如#dedede和#dededd的顏色梯度,這種就不太適合用畫盤的思路去做了。

Update

再說下對于現(xiàn)在真彩色的圖,進行顏色變換,一般是將RGB值轉成HSL/HSV值,然后通過調整H值改變色調。

最后再轉換回RGB值,這個和上面的區(qū)別在于,這種不能單獨改變一類顏色,它的變化是針對于全圖的(除非你限定變換應用區(qū)域),膚色可能會因為H值的變化有所改變。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 精品视频在线看 | 亚洲美女网址 | 中文无码日韩欧免费视频 | 日本全黄 | 日韩在线播放视频 | 欧美日韩色 | 精品日韩二区三区精品视频 | 欧美高清亚洲欧美一区h | 亚洲欧美视频在线播放 | 亚洲欧美日韩在线不卡中文 | 大毛片a大毛片 | 美女网站在线观看视频18 | 久久久久亚洲香蕉网 | 国产人成午夜免费噼啪视频 | 亚洲毛片免费在线观看 | 99久久免费国产精精品 | 亚洲欧美日韩精品高清 | 国产成人免费在线观看 | 国产一区二区三区在线观看免费 | 日韩三级在线播放 | 久久影视一区 | 久久九九国产精品怡红院 | 泷泽萝拉亚洲精品中文字幕 | 日韩一级片 韩国 | 国产盗摄一区二区 | 日本亚洲成高清一区二区三区 | 美女黄色免费看 | 亚洲精品一区二区久久 | 精品中文字幕久久久久久 | 日本一道免费一区二区三区 | 欧美人成在线视频 | 综合558欧美成人永久网站 | 萌白酱国产一区 | 国产精品国产三级国产专区5o | 欧美激情性色生活片在线观看 | 91亚洲精品在看在线观看高清 | 男女视频免费观看 | 精品一区二区三区的国产在线观看 | 欧美午夜精品久久久久免费视 | 成人18免费| 日韩国产精品99久久久久久 |