• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    通过canvas转换颜色为RGBA格式及性能问题的解决

    转换任意颜色为RGBA格式

    前端编程过程中,经常会遇到要把各种颜色格式(比如 “red”、“#F00”、“#FF0000”等)转换成RGBA格式,搜索网络也可以发现一堆的解决方案:

    此处介绍一种方法: 通过canvas的像素获取方法,来获取任意颜色的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]
          };
      }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:HTML5 weui使用笔记
    下一篇:五分钟学会HTML5的WebSocket协议
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    通过canvas转换颜色为RGBA格式及性能问题的解决 通过,canvas,转换,颜色,为,