Canvas转换颜色成RGBA格式的方法及代码是什么
Admin 2022-07-18 群英技术资讯 525 次浏览
转换任意颜色为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] }; }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本篇文章介绍了关于html5 embed标签的loop属性的使用方法详情,还有embed标签的属性使用总结,接下来让我们一起来看这篇文章吧
在前端网页开发的时候,我们常会用到一些渐变效果,这样可能让网站页面更美观。如果是直接使用图片渐变效果,那么修改起来是非常不放方便的,而且也不能支持缩放这些,但是使用css渐变就能够解决这样的问题。这篇文章就主要介绍基于Gecko引擎浏览器的CSS渐变效果实现。
我们在Windows XP的文件夹属性对话框的时候都会发现Attributes分类里的Read-only和Hidden选项有时不是checked状态,那么你知道checked状态是什么吗?我们要如何使用checkbox的indeterminate属性?
前言在平常的样式排版中,我们经常遇到将某个模块隐藏的场景通过css隐藏元素的方法有很多种,它们看起来实现的效果是一致的但实际上每一种方法都有一丝轻微的不同,这些不同决定
本文将给大家介绍在前端开发过程中最常见的一种效果实现,也就是加载动画的实现。简单来说,比如常见的网页加载等待的效果loading.....,通常都是动态的加载效果。下面我就给大家
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008