麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > HTML5 > 正文

通過canvas轉換顏色為RGBA格式及性能問題的解決

2024-09-05 07:23:08
字體:
來源:轉載
供稿:網友

轉換任意顏色為RGBA格式

前端編程過程中,經常會遇到要把各種顏色格式(比如 “red”、“#F00”、“#FF0000”等)轉換成RGBA格式,搜索網絡也可以發現一堆的解決方案:

此處介紹一種方法: 通過canvas的像素獲取方法,來獲取任意顏色的RGBA數值。大致步驟如下:

  • 首先創建一個尺寸為1*1的canvas,并獲取canvas的繪制上下文ctx
  • 設置ctx.fillStyle為指定的顏色
  • 通過ctx.fillRect填充canvas
  • 通過ctx.getImaegeData獲取Imagedata對象,并獲取其中的像素值,獲取的像素值正好是RGBA格式的。

示例代碼如下:

function getRgba(color) {      var canvas = document.createElement("canvas");      canvas.width = 1;      canvas.height = 1;      var ctx = canvas.getContext('2d');      ctx.fillStyle = color;      ctx.fillRect(0, 0, 1, 1);      var colorData = ctx.getImageData(0, 0, 1, 1).data;      return {          r: colorData[0],          g: colorData[1],          b: colorData[2],          a: colorData[3]      };  }

注意性能問題

需要注意的是,如果上述方法頻繁調用,則會有性能問題, 我公司一個小伙伴就出現過這樣的性能問題。因為代碼在頻繁的創建canvas對象, 不斷創建對象會有性能損耗,而JavaScript本身還需要在垃圾回收階段不斷的回收這些創建的對象,也是一次性能消耗。

好的處理方式是創建一個全局的canvas對象,每次都復用該對象。只用做很小的改動,參考下面的代碼 :

  var canvas = document.createElement("canvas");    canvas.width = 1;    canvas.height = 1;   var ctx = canvas.getContext('2d');function getRgba(color) {      ctx.fillStyle = color;      ctx.fillRect(0, 0, 1, 1);      var colorData = ctx.getImageData(0, 0, 1, 1).data;      return {          r: colorData[0],          g: colorData[1],          b: colorData[2],          a: colorData[3]      };  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乱淫67194| 国产精品久久久久久模特 | 精品一区二区免费 | 久久国产亚洲精品 | 日本一级黄色大片 | 91婷婷射 | 国产91丝袜在线播放 | 天天干天天碰 | 毛片免费视频播放 | 欧美黄成人免费网站大全 | v片在线看 | 精品国产一区二区三区成人影院 | 成人黄视频在线观看 | 日韩黄色免费在线观看 | 欧美一级淫片a免费播放口 91九色蝌蚪国产 | 成年人黄色免费电影 | 在线播放av片 | 成人国产视频在线观看 | 亚洲骚妻 | 黄色网址在线播放 | 一区www | 国产精品自拍片 | 色婷婷av一区二区三区久久 | 欧美爱爱视频免费看 | 久久国产成人精品国产成人亚洲 | 玩偶姐姐 在线观看 | 伊人午夜视频 | 久草在线观看福利 | 欧美三级欧美成人高清www | 免费视频xxxx | 中文区中文字幕免费看 | xnxx 日本免费 | 国产精品一区二区三区在线 | 亚洲日韩中文字幕一区 | www.射| 成人毛片一区 | 免费国产精品视频 | 国产亚洲高清视频 | 欧美视频一二区 | 精品一区二区久久久久 | 在线成人www免费观看视频 |