重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了canvas绘图不清晰怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联是专业的南漳网站建设公司,南漳接单;提供网站制作、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行南漳网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!现象描述
同样大小的图片(60x60px)用canvas和DOM绘制,结果发现canvas的画面质量要差很多。结果如下图所示。
上图中,左侧红框中的金币采用DOM绘制,右侧和下方的金币和文字等使用canvas绘制,结果canvas绘制的图片模糊不清。
原因分析
假设dpr = 2;图片大小为60x60px;对dpr有一定的了解基础。
1.DOM呈现图片过程
图片——》浏览器css像素(显示尺寸)——》屏幕实际像素
60x60 30x30 60x60
图片像素——》实际像素
1: 1
2.canvas绘制过程
图片像素——》canvas像素(画布尺寸)——》css像素(显示尺寸)——》屏幕实际像素
60x60 30x30 30x30 60x60
图片像素——》画布像素——》实际像素
4: 1: 4
也就是说,canvas的绘制过程中图片到画布的过程中进行了像素的抽稀,画布到屏幕像素时又进行了插值,所以造成图片质量下降。
解决方案
放大画布的尺寸,但是canvas显示尺寸不变;
图片像素——》canvas像素(画布尺寸)——》css像素(显示尺寸)——》屏幕实际像素
60x60 60x60 30x30 60x60
图片像素——》实际像素
1: 1
而canvas的设计的时候正好有对象的属性来分别管理画布尺寸和显示尺寸;canvas的width、height属性用于管理画布尺寸;canvas的style属性中的width、height正好是显示尺寸。
也就是说解决方案就是设置舞台的尺寸和图片像素的尺寸一致,显示尺寸为正常显示尺寸;假设canvas的显示尺寸为窗口宽度,创建canvas的时候指定canvas的width属性为2 * body.clientHeight;style.widht为body.clientHeight + 'px';
改变后的效果图如下:
感谢你能够认真阅读完这篇文章,希望小编分享的“canvas绘图不清晰怎么办”这篇文章对大家有帮助,同时也希望大家多多支持创新互联建站,关注创新互联网站建设公司行业资讯频道,更多相关知识等着你来学习!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。