很久没写博客了,今年过年的时候,家里出了意外,现在心里依然很难受。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画不出图像的原因的更多相关文章

  1. CSS3进度条 和 HTML5 Canvas画圆环

    看到一些高大上的进度条插件,然后想自己用CSS写.经过搜索资料之后,终于成功了.为了以后方便拿来用,或者复习.将代码贴出. HTML代码: 只需要两个div,外面的为一个有border的div id为 ...

  2. 基于HTML5 Canvas 实现弹出框

    用户鼠标移入时,有弹出框出现,这样的需求很常见.这在处理HTML元素实现时简单,但是如果是对HTML5 Canvas 构成的图形进行处理,这种方法不再适用,因为Canvas使用的是另外一套机制,无论在 ...

  3. HTML5 Canvas 画虚线组件

    前段时间由于项目需要,用到了HTML5 Canvas画图,但是没有画虚线的方法,自己写了一个HTML5 画虚线的组件. dashedLine.js if (window.CanvasRendering ...

  4. HTML5 Canvas 画钟表

    画钟表是2D画图的老生常谈,我也不能免俗弄了一个.代码如下: <!DOCTYPE html> <html lang="utf-8"> <meta ht ...

  5. html5 canvas画饼

    1. [图片] lxdpie.jpg ​2. [文件] lqdpie.html ~ 801B     下载(7) <!DOCTYPE HTML PUBLIC "-//W3C//DTD ...

  6. html5 canvas画云

    使用函数画出天空的云层图像: y 主要使用到的是数学的圆与弧度之间转换关系: 代码如下 //div对象 var parentContainer = document.getElementById(&q ...

  7. html5 canvas画流程图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  8. HTML5 Canvas画数字时钟

    先不说废话,没代码算个蛋. 一些地方注释都写得比较清楚,不过这只是部分,因为只有秒针,但是时针,分针的逻辑都是一致的. 代码中有些坐标不知道为什么较不准,看看就好

  9. html5 canvas画进度条

    这个ie8的兼容是个问题,ie8 的innerHTML有问题啊,添加两个附件吧 <!DOCTYPE html> <html> <head> <meta cha ...

随机推荐

  1. NET中的Memcached.ClientLibrary使用详解

    memcached在windows下的下载与安装 下载地址:http://pan.baidu.com/s/1yVILw       提取密码:5gx9 官方网站:http://memcached.or ...

  2. 优化定时器NSTimer-runloop使用

    参考文档:http://www.cnblogs.com/junhuawang/p/4647559.html   - (void)viewDidLoad { [super viewDidLoad];   ...

  3. 【转载】nodejs,npm,express分别什么?

    很多刚刚接触nodejs的初学者,都会经历一个很繁冗的环境安装过程. 一般主要要安装nodejs,npm和express三样东西.那么这三样东西分别是干什么的呢? 本篇文章就大致介绍一下这三样东西分别 ...

  4. ssh 服务器之间公钥认证方式的配置

    前言 项目中需要编写脚本在服务器之间上传或者下载文件,但没有相关服务器来测试脚本,于是就着手安装两台server,然后用ssh的相关命令去配置server之间公钥认证登录. 步骤 1. 在VM Box ...

  5. No Architectures to Compile for (ONLY_ACTIVE_ARCH=

    No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7, VA 运行报错 出现的原因:armv7s是应用在iP ...

  6. C语言获得文件一行

    C语言获得一行的数据还是比较麻烦的,这里讲一下几种曾经用过的方法. 第一种,是最笨的方法,就是一个一个字符的读取,也是最容易想到的方法.具体实现如下:void   read_line(char   l ...

  7. 转载-------makefile 使用总结

    转载自:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的 ...

  8. 14,SFDC 管理员篇 - 外部数据集成

    1,Connect an External Data Source, 添加新的数据源,填写如下 2, 点击Validate and Sync 按钮 3,添加Orders和Orders Details ...

  9. 在iframe中使用cookie需要注意

    cookie的使用早已不新鲜了,但是最近在做项目时还是被坑了一把. 那么接下来让我们来看一下这个"坑"是个什么情况! 前提: 1.现在有两个页面A.html, B.html,同时, ...

  10. Linux:history命令记录操作时间、操作用户、操作IP

    [步骤] 1./etc/profile文件中加入以下内容 2.执行:source /etc/profile [效果]