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

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

  在看到网上大楼表白的时候,在老板看来还挺好玩的,就问我说能不能做个这个。看到这个图片我的第一反应是:简单,不就是输入个文字嘛。然后,等我做的时候我发现,好像理想跟现实差距有点大。直接用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. delphi popupmenu控件用法

    是,右键菜单控件,和特定的窗体控件的popmenu属性关联就可以了 添加一个popupmenu控件,双击该控件,在弹出的界面中设置好name以及caption属性,点击事件的做法就跟button一样了 ...

  2. HDU-2060-Snooker

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2060 题意: 给你场上剩下的球数m , 和 a ,b 两名队员目前得分,现在假设a将 所有的球m都打入 ...

  3. Java之模板方法模式(Template Method)

    Java之模板方法模式(Template Method) 1. 概念:定义一个算法的骨架,而将一些实现步骤延迟到子类中. 把不变的行为搬到超类,去除子类中重复的代码来体现他的优势. 2. UML图: ...

  4. C# 定时器计划任务

    函数类: public class MyPlan { public void RunMyplan(object source, ElapsedEventArgs e) { //读取配置文件设定的日期时 ...

  5. SQL2008实现数据库自动定时备份——维护计划

    在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员 每天守到晚上1点去备份数据库.要实现数据库的 ...

  6. Jquery右击显示菜单事件,运用smartMenu插件。

    基本格式: 1.引用jquery.smartMenu插件.css样式: <script src="gongju/jquery-1.11.2.min.js" type=&quo ...

  7. Java语言开发环境搭建

    在使用任何计算机语言开发之前,都要搭建其开发环境. 一.明确什么是JDK.JRE. 二.下载JDK 三.安装JDK 四.配置环境变量 五.验证是否成功 一.什么是JRE.JDK. JRE(Java R ...

  8. Spring MVC 教程(比较全的一篇文章了)

    http://elf8848.iteye.com/blog/875830 11年1月份的文章,但是Spring3,现在是4,不过还是很实用

  9. hadoop编译

    说明: hadoop版本:hadoop-2.5.0-cdh5.3.6 环境:centos6.4 必须可联网 hadoop 下载网址: http://archive.cloudera.com/cdh5/ ...

  10. (Jquery)避免数据相加小数点后产生多位数和计算精度损失

    /** * 加法运算,避免数据相加小数点后产生多位数和计算精度损失. * * @param num1加数1 | num2加数2 */ function numAdd(num1, num2) { var ...