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

淩亂°似流年 2022-11-07 13:13 200阅读 0赞
  1. // 返回灰色画布
  2. function grey_img(src,callback){
  3.   /*创建一个canvas*/
  4. var canvas=document.createElement('canvas');
  5. var ctx=canvas.getContext('2d');
  6. var img=new Image();
  7. img.src=src;
  8. img.onload = function(){
  9. // 因为图片加载时异步的,所以需要采用回调的方式,不然图片宽高读取会变成0导致 Failed to execute 'getImageData' on 'CanvasRenderingContext2D' 报错
  10. canvas.height=img.height;
  11. canvas.width=img.width;
  12. ctx.drawImage(img,0,0);
  13. var imgdata=ctx.getImageData(0,0,canvas.width,canvas.height);var data=imgdata.data;
  14. /*灰度处理:求r,g,b的均值,并赋回给r,g,b*/
  15. for(var i=0,n=data.length;i<n;i+=4){
  16. var average=(data[i]+data[i+1]+data[i+2])/3;
  17. data[i]=average;
  18. data[i+1]=average;
  19. data[i+2]=average;
  20. }
  21. ctx.putImageData(imgdata,0,0);
  22. if(typeof callback === 'function'){
  23. /*将处理后的回调给调用者*/
  24. callback({ canvas,ctx});
  25. }
  26. }
  27. }
  28. // 灰图变量
  29. var grey_img_icon = null;
  30. var Cicon_state = null;
  31. // 设置图标函数
  32. function switch_icon(_on_off){
  33. _on_off = !zsl.empty(_on_off);
  34. if(Cicon_state !== _on_off){
  35. let path = 'img/icon_128.png';
  36. Cicon_state = _on_off;
  37. if(_on_off){
  38. // 恢复正常图标
  39. chrome.browserAction.setIcon({
  40. path
  41. });
  42. // 启动程序
  43. // start code……
  44. }else{
  45. if(zsl.empty(grey_img_icon)){
  46. grey_img(path,function(imgObj){
  47. // 设置灰色图标
  48. chrome.browserAction.setIcon({
  49. imageData: imgObj.ctx.getImageData(0,0,128,128)
  50. });
  51. })
  52. }
  53. // 关闭程序
  54. // close code……
  55. }
  56. }
  57. }

参考资料: chrome.browserAction 手册

发表评论

表情:
评论列表 (有 0 条评论,200人围观)

还没有评论,来说两句吧...

相关阅读