该demo放于tomcat下运行,否则出现跨域错误

<!DOCTYPE html>
<html><head><meta charset="utf-8"></head><body style="height: 100%; margin: 0"><div style="text-align: center;"><canvas id="myCanvas" width="500" height="300" style="border: 1px solid #fff123"></canvas><div><button id="btn" οnclick="download()">点我下载</button></div></div><script type="text/javascript">let cans=document.getElementById("myCanvas");let ctx=cans.getContext("2d");let img =new Image();img.src="2.jpg";img.setAttribute("crossOrigin",'Anonymous');img.onload = function(){//以Canvas画布上的坐标(10,10)为起始点,绘制图像ctx.drawImage(img, 10, 10);    ctx.drawImage(img,50,50,100,100);ctx.strokeStyle = "#0695FF";        //定义矩形的颜色ctx.strokeRect(50,50,100,100);ctx.strokeRect(50,170,100,100);};function imgType(ty) {let type = ty.toLowerCase().replace(/jpg/i, 'jpeg');var r = type.match(/png|jpeg|bmp|gif/)[0];return 'image/' + r;}function download() {let type = 'png';   //设置下载图片的格式
 let img_png_src = cans.toDataURL("image/png");  //将canvas保存为图片
 let imgData = img_png_src.replace(imgType(type),'image/octet-stream');let filename = '图片' + '.' + type; //下载图片的文件名
 saveFile(imgData,filename);}let saveFile = function(data, fileName){let save_link = document.createElement('a');save_link.href = data;save_link.download = fileName;let event = document.createEvent('MouseEvents');event.initEvent("click", true, false);save_link.dispatchEvent(event);};</script></body>
</html

转载于:https://www.cnblogs.com/daysn/p/10374828.html

一个canvas的demo相关推荐

  1. 微信小游戏 - Canvas/WebGL Demo 移植

    这是个人关于微信小游戏系列文章的第一篇,在这系列文章里会描述 -- 如何把一些 Canvas/WebGL Demo 移植到小游戏环境并支持双端运行: 对小游戏在 Android 平台的运行时架构进行分 ...

  2. 移植到android_微信小游戏 Canvas/WebGL Demo 移植

    本文由大神 易旭昕 授权发布, 原文链接:https://zhuanlan.zhihu.com/p/33785287 (点击文后原文链接可跳转至作者的知乎) --------------------- ...

  3. canvas 文字颜色_实现一个canvas小画板

    <canvas>是HTML5新增的元素,可用于通过使用JavaScript中的脚本来绘制图形.例如,它可以用于绘制图形,制作照片,创建动画,甚至可以进行实时视频处理或渲染. --摘自MDN ...

  4. java 基础api实现上传,上传文件到7牛云存储的java api一个简单的demo实现

    最近在做一个项目,需要用到云存储,项目用的是七牛云.现在将项目过程中关于调用七牛云平台的java api来上传本地文件到七牛云空间的一个简单的demo展示给大家,希望对同样再用七牛云的童鞋们有所帮助. ...

  5. 我的第一个 react redux demo

    最近学习react redux,先前看过了几本书和一些博客之类的,感觉还不错,比如<深入浅出react和redux>,<React全栈++Redux+Flux+webpack+Bab ...

  6. Unity3D引擎入门搭建一个FPS游戏Demo

    目录 一.unity3d简介(平台,应用范围,经典游戏) 二.界面,基础操作(界面,创建场景,灯光系统,摄像机,组件,脚本语言) 1.界面 2.基本操作 三.demo制作(坐标系统,视角控制,移动,碰 ...

  7. 三维重建基本流程,搭建一个龙的demo

    最近在学习三维重建的一些知识,作为一个小白,从入门到完成一次重建过程是一个需要花一段比较长时间的过程,在网上搜索各种资料时,会因为资料不全,导致无法理清楚逻辑,从而导致入门困难. 我主要是通过书和网上 ...

  8. 开发一个Canvas小游戏 实现一个游戏“引擎”

    前言 这个游戏其实在三四年前就写了,中间还重构过好几次,之前都是用简单的面向对象和函数式编程来写,游戏中的元素关系到还是分的挺开,但是游戏的渲染,运算等逻辑分的不够清晰,整个逻辑基本都是自顶向下的流水 ...

  9. 实现一个canvas画板

    <canvas>是HTML5新增的元素,可用于通过使用JavaScript中的脚本来绘制图形.例如,它可以用于绘制图形,制作照片,创建动画,甚至可以进行实时视频处理或渲染. --摘自MDN ...

  10. android 观察者模式的简单demo,一个简单的demo彻底搞懂观察者模式

    介绍 观察者模式也被称为发布-订阅(Publish/Subscribe)模式,它属于行为型模式的一种.观察者模式定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听.当这个主题对象状态变 ...

最新文章

  1. SAP QM 事务代码QPR3显示一个Physical Sample Record
  2. hadoop2.4.1结合hbase0.96.2
  3. Android UI开发第三十篇——使用Fragment构建灵活的桌面
  4. Luffy之Xadmin以及首页搭建(轮播图,导航)
  5. Android--ViewPager点击按钮切换下一页
  6. [Python图像处理] 七.图像阈值化处理及算法对比
  7. aix6.1 nfs
  8. 求csdn博客优良编辑方法
  9. 图像分类算法DenseNet论文解读
  10. selenium 模拟登录qq空间
  11. GM300单片硅钢铁损测试仪操作使用指引
  12. SystemUI Monkey测试原生代码报错:MLand类ArrayIndexOutOfBoundsException
  13. 违背妇女意志_2018年国际妇女节:在技术中庆祝妇女
  14. 计算机桌面文件如何发送给qq好友,QQ怎么与好友分享屏幕 如何共享电脑屏幕给好友...
  15. vue读取excel表格数据_vue 利用 js-xslx 读取 excel 表格文件
  16. 文本溢出显示省略号效果
  17. 技术随笔:利用反余弦函数绘制余弦曲线
  18. 【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
  19. 第一个计算出地球周长的人——埃拉托色尼
  20. day13-event2

热门文章

  1. java中常用的类——Object类
  2. spark结构化流保存mysql_[Spark]-结构化流之输出篇(待重修)
  3. date java format_java-DateFormat
  4. javascript 轮播图(缓存效果)详细篇
  5. PHP JAVA BASE64 encode decode
  6. 字符串统计,一个中文算2个字符,一个英文算一个字符
  7. RocketMQ 集群部署模式 理论介绍
  8. QT creator 编辑器快捷键
  9. python2.7.11 for iOS 苹果上的python27环境
  10. Linux笔记--Linux进程通信