iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 11
0
自我挑戰組

學習 canvas 日記系列 第 11

第 11 天 負片效果

  • 分享至 

  • xImage
  •  

負片效果就是把現在的顏色相反後再重新繪製一張新的

所以要做的就是找出每個顏色的 [R, B, G, K]的陣列
然後把每個顏色陣列中的 R、B、G 都用255減去
再把每個變色後的點覆蓋在原圖之前

var imageData = ctx.getImageData(0, 0, cvs.width, cvs.height);
// 取得圖片資料

var data = imageData.data;
// 取得圖片每個點的顏色陣列 

for(var i = 0; i < data.length; i += 4){
	data[i] = 255-data[i];       // R
	data[i+1] = 255-data[i+1];   // G
	data[i+2] = 255-data[i+2];   // B
}
ctx.putImageData(imageData, 0, 0);

就會像下圖 左-原圖 右-顏色相反後的圖
https://ithelp.ithome.com.tw/upload/images/20181024/20107496LfxVTd8hm0.jpg


for(var i = 0; i < data.length; i += 4){
	data[i] = 255-data[i];       // R
	data[i+1] = 255-data[i+1];   // G
	data[i+2] = 255-data[i+2];   // B
}

這部分就是在轉換顏色時最重要地方
RGB 的值是 0-255 所以用255減現在的顏色就會變成相反的顏色
還有加減色時不一定要用 255 也可以再改顏色變化小的 -50 、+50 或保持 data[i] 來做出各種變化
https://ithelp.ithome.com.tw/upload/images/20181024/20107496kJBB2mgU88.jpg


上一篇
第 10 天 插入圖片
下一篇
第 12 天 文字樣式一
系列文
學習 canvas 日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言