公司刚刚处于创业初期,总是会尝试着做一些新奇的东西。尤其是对于网上一些好玩的东西,总是希望自己也能有一样的功能。不得不说,对于我来说,既是种机遇,也是种挑战。因为这样给了我足够的发展空间,可以按着自己想的去实现功能,可以去选择一些优秀的框架来学习和使用。不过,对于我这样经验还不够的人来说,该怎么选择,也是一种挑战。

  不过,说实在的,我还是挺喜欢这样的日子的。老板总是会有些稀奇古怪的想法,来促使着我的成长。就像这次的要说的大楼表白,在老板第一次提起说要做这个功能的时候,我整个人都不是很好,这都是个什么需求???先拿个已有的成品来说吧。

  在看到网上大楼表白的时候,在老板看来还挺好玩的,就问我说能不能做个这个。看到这个图片我的第一反应是:简单,不就是输入个文字嘛。然后,等我做的时候我发现,好像理想跟现实差距有点大。直接用html加css实现出来的文字根本不是这个效果。尤其是这个文字,仔细看会发现,这不是普通的文字,而是LED灯光效果的文字,到这个时候我才发现这个需求好像并没有我想的那么简单,尤其是做出来的内容是需要当成图片保存下来的。

  如果不是因为有后面那个需求的话,我根本是想不到canvas的。因为前端似乎没有什么图片生成器,除了现在出的特别厉害的canvas。可能是我才疏学浅,可能还有什么其他的功能,不过我能想到的也就canvas了。不过这次我主要想写的并不是怎么来做这个大楼表白,因为有了这个想法之后,实现起来已经是很简单了,麻烦的只是调样式而已。如果有兴趣的人可以私信我要源码。

  这次要说的是用canvas实现另一个功能,跟之前的类似,实现的是图片的合成的功能,要实现图中二维码的替换。

  这里用canvas合成图片的功能的话网上一抓一大把,我这里就不多提了。我这次遇到的问题是,我在我的微信端不管怎么样都生成不了图片了,而在微信调试工具里面确是一点问题都没有。这个问题出的是真的不讲道理,于是我去复制之前大楼表白的代码,发现还是不行,于是我尝试着把把canvas导出出来,发现canvas的确生成了,可是就是卡死在生成图片这一步了,可是在我的微信调试工具中确是一点问题都没有。所以说写代码最怕的不是出错,而是你明明写的好像是对的,而且明明在调试的时候也是可以的,然而就是在实际测试的时候怎么都出不来结果。没办法,只能把所有的都推翻从0开始。于是我从新建了个文件夹,想着换个浏览器调试一下试试看。果然,问题出现了。他终于报错了!!!我这个欣慰啊,总算是知道他是错的了。于是我就想着去百度去查这个bug,然后发现,国内的查不到。。。不死心的我去下载了个FQ软件,没想到还真让我查到了个国外有个跟我错的差不多的哥们,也是canvas导图片失败在求助。然后继续往下翻,总算是找到原因了,他那回复的原文是

  You have an image in your canvas that is gotten from a different domain, and that means your canvas is tainted with cross-origin resources.

  这句话真是一语点醒梦中人啊,虽然我英语并不是很好,但是我凭我直觉来说,他在告诉我,canvas跨域了。然后我再去查关于canvas跨域的解决方案。网上给出的解决办法是把图片下载到本地,然后在生成图片。这个的话就要靠后端工程师配合了,不过最后来说,这个功能是实现了。

  这个随笔感觉真的写的好随意,代码都没有,算是写一写最近的状态吧,整个人迷迷糊糊的,很早想写这篇博客了,可是总是在拖,发现拖着拖着这个状态都没有了。写出来的博客跟当时想的完全不一样。就当一次教训吧,也给自己立个flag。从今以后做事不会再这么拖沓了,希望以后能分享出更高含金量的好文章。

canvas随笔的更多相关文章

  1. CANVAS实现调色板 之 我的第一个随笔

    主题代码 <canvas id="color"></canvas> <script> var color=document.getElement ...

  2. Kinect开发随笔①——红外扫描仪(Kinect 数据源)

    来源于 MVA 的 快速入门:Kinect for Windows v2 开发 的学习随笔 具体内容为上图所示章节内容 章节内全部代码:GitHub地址点我(链接失效,待补档) <Page &l ...

  3. HTML5随笔

    1 首先介绍一下html5,以及为什么用html5, HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定. HTML5的设计目的是为了在移动设备上支持多媒体.HTM ...

  4. 【canvas系列】用canvas实现一个colorpicker

    每个浏览器都有自己的特点,比如今天要做的colorpicker就是,一千个浏览器,一千个哈姆雷特,一千个colorpicker.今天canvas系列就用canvas做一个colorpicker. ** ...

  5. 移动端 canvas插入多张图片生成一张可保存到手机图片

    第一次写随笔,想把开发中遇到的问题与大家分享,可能会让您少走一步弯路. 先看下效果图: 代码分三部分为大家展示: 1.html 部分 <div id="myQrcontainer&qu ...

  6. canvas 从初级到XX 1# 部分非基础原生API的使用 [初级向]

    标题canvas 从初级到XX,XX是因为本文随机都可能会太监,并不会支持到入土.请慎重的往下看. 对于canvas的介绍,随处都可以找到,也就不啰嗦太多了.就直奔主题了. 先看一段代码,以及实现的效 ...

  7. canvas 从初级到XX 2# 让我们在之前的基础之上,再迈进一步吧 [中级向] (上)

    还是老样子,先啰嗦一点前言. 最近各种事务缠身,所以也就隔了比较长的时间才开始码这篇文.希望不会这么快就过气. 好了,接下来就开始码代码.(写到中途,突然感觉到的.本篇设计大量初中物理知识,请怀念的往 ...

  8. 03_HTML Canvas第一天

    视频来源:麦子学院 讲师:刘慧涛 w3cshool之HTML5画布:http://www.w3school.com.cn/html5/html_5_canvas.asphtml5 canvas参考手册 ...

  9. canvas实现3D魔方

    摘要:使用canvas实现可交互的3D魔方 一.简单分析 魔方物理性质: 1.中心块(6个):中心块与中心轴连接在一起,但可以顺着轴的方向自由的转动. 2.棱块(12个):棱块的表面是两个正方形,结构 ...

随机推荐

  1. [QT]简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件

    转自:http://blog.csdn.net/dbzhang800/article/details/6348432 简单介绍一下 *.pro.*.pri.*.prf.*.prl等四种文件:干嘛用的, ...

  2. 验证浏览器是否安装已flash插件的js脚本

    function flashChecker() { var hasFlash = 0; //是否安装了flash var flashVersion = 0; //flash版本 if(document ...

  3. CentOS6.5+mysql5.1源码安装过程

    一:先安装依赖包(不然配置的时候会报错的!) yum -y install ncurses* libtermcap* gcc-c++* 新建mysql用户 [root@HE1Packages]# gr ...

  4. 扩展BaseAdapter实现不存储列表项的ListView

    下面的实例将会通过扩展BaseAdapter来实现Adapter,扩展BaseAdapter可以取得对Adapter最大的控制权:程序要创建多个列表项,每个列表项的组件都由开发者来决定. 下面的布局文 ...

  5. WPF ResourceDictionary的使用

    作用:一个应用程序中,某个窗口需要使用样式,但是样式非常多,写在一个窗口中代码分类不方便.最好Style写在专门的xaml文件中,然后引用到窗口中,就像HTML引用外部css文件一样. 初衷:就在于可 ...

  6. 程序启动缓慢-原来是hbm.xml doctype的原因

    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "h ...

  7. UNIX网络编程中的需要注意的问题

    字节流套接字上调用read或write,输入或输出的字节数可能比请求的数量少,这个现象的原因在于内核中用于套接字的缓冲区可能已经达到了极限.此时所需要的是调用者再次调用read或write函数.这个现 ...

  8. JSP EL表达式忽略方法

    JSP EL表达式忽略方法: web.xml中,和jsp中:jsp中的等级要高一些: web.xml: <?xml version="1.0" encoding=" ...

  9. LoadRunner面试题

    在LoadRunner中为什么要设置思考时间和pacing 答: 录制时记录的是客户端和服务端的交互,如果要精确模拟 用户的行为,那么客户操作客户端时花费了很多时间要怎么模拟呢?录入 填写提交的内容, ...

  10. Android中的IPC机制

    Android IPC简介 IPC是Inter-Process Communication的缩写,含义就是进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程.那么什么是进程,什么是线程,进程 ...