CHROME扩展笔记之图标设置(彩色和灰色的切换)

// 返回灰色画布
function grey_img(src,callback){
  /*创建一个canvas*/
	var canvas=document.createElement('canvas');
	var ctx=canvas.getContext('2d');
	var img=new Image();
	img.src=src;
	img.onload = function(){
		// 因为图片加载时异步的,所以需要采用回调的方式,不然图片宽高读取会变成0导致 Failed to execute 'getImageData' on 'CanvasRenderingContext2D' 报错
		canvas.height=img.height;
		canvas.width=img.width;
		ctx.drawImage(img,0,0);
		var imgdata=ctx.getImageData(0,0,canvas.width,canvas.height);var data=imgdata.data;
		/*灰度处理:求r,g,b的均值,并赋回给r,g,b*/
		for(var i=0,n=data.length;i<n;i+=4){
			var average=(data[i]+data[i+1]+data[i+2])/3;
			data[i]=average;
			data[i+1]=average;
			data[i+2]=average;
		}
		ctx.putImageData(imgdata,0,0);
		if(typeof callback === 'function'){
			/*将处理后的回调给调用者*/
			callback({canvas,ctx});
		}
	}
}
// 灰图变量
var grey_img_icon = null;
var Cicon_state = null;
// 设置图标函数
function switch_icon(_on_off){
	_on_off = !zsl.empty(_on_off);
	if(Cicon_state !== _on_off){
		let path = 'img/icon_128.png';
		Cicon_state = _on_off;
		if(_on_off){
			// 恢复正常图标
			chrome.browserAction.setIcon({
				path
			});
			// 启动程序
			// start code……
		}else{
			if(zsl.empty(grey_img_icon)){
				grey_img(path,function(imgObj){
					// 设置灰色图标
					chrome.browserAction.setIcon({
						imageData: imgObj.ctx.getImageData(0,0,128,128)
					});
				})
			}
			
			// 关闭程序
			// close code……
		}
	}
}

参考资料: chrome.browserAction 手册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值