栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在HTML5画布中设置单个像素的最佳方法是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在HTML5画布中设置单个像素的最佳方法是什么?

有两个最佳竞争者:

  1. 创建1×1图像数据,设置颜色,并

    putImageData
    在以下位置:

    var id = myContext.createImageData(1,1); // only do this once per page

    var d = id.data; // only do this once per page
    d[0] = r;
    d[1] = g;
    d[2] = b;
    d[3] = a;
    myContext.putImageData( id, x, y );


  2. 使用

    fillRect()
    绘制像素(应该没有走样的问题):

    ctx.fillStyle = "rgba("+r+","+g+","+b+","+(a/255)+")";

    ctx.fillRect( x, y, 1, 1 );

我建议针对您关心的浏览器进行测试以实现最大速度。 截至2017年7月,

fillRect()
在Firefox v54和Chrome
v59(Win7x64)上速度提高了5-6倍。

其他更明智的选择是:

  • 使用

    getImageData()/putImageData()
    整个画布上; 这比其他选项要慢100倍。

  • 使用数据网址创建自定义图片并

    drawImage()
    用于显示它:

    var img = new Image;

    img.src = “data:image/png;base64,” + myPNGEnprer(r,g,b,a);
    // Writing the PNGEnprer is left as an exercise for the reader

  • 创建另一个img或画布,其中填充了您想要的所有像素,并用于

    drawImage()
    仅涂抹您想要的像素。这可能非常快,但是有一个局限性,就是您需要预先计算所需的像素。

请注意,我的测试并不尝试保存和恢复canvas上下文

fillStyle
;这会降低
fillRect()
性能。另请注意,我不是从一开始就做任何准备,也不是每次测试都测试完全相同的像素集。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/575406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号