html5 canvas画不出图像的原因
很久没写博客了,今年过年的时候,家里出了意外,现在心里依然很难受。6月份之前一直忙着写毕业论文,答辩完6月初回公司继续上班,今天刚好周末有空,就写下之前碰到一个问题。
做一个图像查看器(基于Chrome浏览器),可以旋转缩放,在一位同事的代码的基础上进行修改,因为同事使用了html5中的canvas,不过他那边最大放大倍数只有3倍,而我这边最大放大倍数为8倍,这样,问题就出现了,测试人员A把某一张图像放大到第8倍的时候,图像突然不见了,而她说在另外一个测试人员B的电脑上测试则不会出现图像消失,我猜想会不会是浏览器版本不同的原因,因为在我这边不会出现这个问题,我的浏览器版本是26....,而测试人员A的浏览器版本是28...。我在开发人员C的浏览器上进行测试,他的版本也是28....,他的也不会出现消失的情况,然后去了组长的浏览器测试,他的浏览器版本跟我一样是26...,组长的也出现图像消失,这样排除了浏览器版本产生的原因。后来,我在测试人员A的浏览器用比较小的图像测试,不会出现消失,在我的浏览器上用一张很大的图像,大于1440X900,放大到第八倍,也没有出现消失,想到做下压力测试,放大个20倍试试,还不会消失,再试试60倍,图像消失了。从这里可以看出,图像大小及放大倍数与图像消失是有关系的。
我们的电脑的硬件配置是一样的,所以暂时想不出什么原因,在网上搜索canvas画图的相关资料,看到有些说用GPU加速canvas的,后来发现Chrome也有支持硬件加速画布的选项,因为学过GPU加速,CUDA编程,知道有时候使用GPU加速反而慢了,因为数据传输带宽存在瓶颈,大家的显卡都用Intel的集成GPU(测试人员A的另一个电脑使用带NVidia
GPU芯片的独立显卡,不会出现消失的情况,而且速度很快),然后在stackoverflow上找到一个评论,说在Chrome GPU设置上把支持硬件加速画布停用,就可以,尝试后,发现之前出现图像消失的浏览器确实不会再出现图像消失了,(可以看出硬件加速不一定就快了)。但是现在还是不懂的是,为什么大家的硬件配置一样,浏览器的设置一样,为什么有些会消失,有些不会,本来想继续测试,看到底是哪部分不同,之前用GPU-Z.0.7.2查看了显卡的信息,及使用情况,没有区别,现在猜想可能是由于在canvas画图的时候,数据还没有传到GPU端,所以就没画出来。
虽然在浏览器上进行设置解决了图像消失的问题,但是组长觉得设置浏览器的方式不太好,所以最后另一位同事采用CSS3写了图像的旋转与缩放,不会出现消失的问题,代码相对也简洁很多,而且即使放到100倍也没问题。
html5 canvas画不出图像的原因的更多相关文章
- CSS3进度条 和 HTML5 Canvas画圆环
看到一些高大上的进度条插件,然后想自己用CSS写.经过搜索资料之后,终于成功了.为了以后方便拿来用,或者复习.将代码贴出. HTML代码: 只需要两个div,外面的为一个有border的div id为 ...
- 基于HTML5 Canvas 实现弹出框
用户鼠标移入时,有弹出框出现,这样的需求很常见.这在处理HTML元素实现时简单,但是如果是对HTML5 Canvas 构成的图形进行处理,这种方法不再适用,因为Canvas使用的是另外一套机制,无论在 ...
- HTML5 Canvas 画虚线组件
前段时间由于项目需要,用到了HTML5 Canvas画图,但是没有画虚线的方法,自己写了一个HTML5 画虚线的组件. dashedLine.js if (window.CanvasRendering ...
- HTML5 Canvas 画钟表
画钟表是2D画图的老生常谈,我也不能免俗弄了一个.代码如下: <!DOCTYPE html> <html lang="utf-8"> <meta ht ...
- html5 canvas画饼
1. [图片] lxdpie.jpg 2. [文件] lqdpie.html ~ 801B 下载(7) <!DOCTYPE HTML PUBLIC "-//W3C//DTD ...
- html5 canvas画云
使用函数画出天空的云层图像: y 主要使用到的是数学的圆与弧度之间转换关系: 代码如下 //div对象 var parentContainer = document.getElementById(&q ...
- html5 canvas画流程图
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- HTML5 Canvas画数字时钟
先不说废话,没代码算个蛋. 一些地方注释都写得比较清楚,不过这只是部分,因为只有秒针,但是时针,分针的逻辑都是一致的. 代码中有些坐标不知道为什么较不准,看看就好
- html5 canvas画进度条
这个ie8的兼容是个问题,ie8 的innerHTML有问题啊,添加两个附件吧 <!DOCTYPE html> <html> <head> <meta cha ...
随机推荐
- core文件
1.ulimit -c查看是否可以产生core文件 打印0表示当前不产生core文件 2.ulimit -c unlimited 设置产生core文件 这种方法只是临时设置产生core文件 3.ec ...
- C#动手实践:Kinect V2 开发(1):初步了解及环境搭建
该分享使用的是Kinect 二代,C#做为编程语言,请知悉 Kinect是微软在2009年6月2日的E3游戏展上,正式公布的XBOX360体感周边外设.它是一种3D体感摄影机,同时它导入了即时动态捕捉 ...
- LSOF 安装与使用
linux上安装: tar zxvf lsof_4.76.tar.gz cd lsof_4.76 ls 00.README.FIRST_4.76 lsof_4.76_src.tar.gz README ...
- onAttachedToWindow () 和 onDetachedFromWindow () (转)
原文地址:http://blog.sina.com.cn/s/blog_74c22b2101012urv.html
- 基于Material Design(转载)
SeeNewsV2新闻Android客户端 基于Material Design http://www.codesocang.com/gn/xiangmu/33630.html 直接拿来用!十大Mate ...
- SQL时间相关
SQL --本周第一天 SELECT DATEADD(Day,-(DATEPART(Weekday,getdate())+@@DATEFIRST-)%,getdate()) --or ,getdate ...
- boost asio tcp server 拆分
从官方给出的示例中对于 boost::asio::ip::tcp::acceptor 类的使用,是直接使用构造函数进行构造对象,这一种方法用来学习是一个不错的方式. 但是要用它来做项目却是不能够满足我 ...
- 那些年蹚过的坑(c++)
1 main中的参数 尽量用英文双引号括起来,否则可能会出现字符串截断的情况(linux gcc 4.4 不加英文引号的话,遇到英文;会丢弃;后面的部分) 2 包含ipv6地址结构体(in6_addr ...
- 测不准的程序员(Heisenberg Developers)
摘译自http://mikehadlow.blogspot.co.uk/2014/06/heisenberg-developers.html ——“你无法在不改变他们状态的情况下观察一个开发者” ...
- VMWare虚拟机 使用vmtools拷贝文件 临时文件问题
Win7下, 临时文件会存放在路径C:\Users\admin\AppData\Local\Temp\vmware-admin\VMwareDnD,如果不及时删除,C盘就会越来越大直至放满.