<script>
  var canvas, context2D, canvasimg, context2Dimg ,fontSize = 100;
   
  window.onload = function() {
  canvas =document.getElementById("canvas");
  context2D = canvas.getContext("2d");
  canvasimg =document.getElementById("canvasimg");
  context2Dimg = canvasimg.getContext("2d");
  context2D.font ="100px 黑体";
  context2D.fillText("V", 0, fontSize);
   
  //添加range事件
  document.getElementById("range").addEventListener("mouseup", function() {
  fontSize = this.value;
  context2D.font = this.value +"px 黑体";
  context2D.clearRect(0, 0, canvas.width, canvas.height);
  context2D.fillText("V", 0, fontSize);
  });
  }
   
  function go(){
   
  var img = convertCanvasToImage(document.getElementById("canvas"));
  context2Dimg.clearRect(0, 0, canvas.width, canvas.height);
  context2Dimg.drawImage(img, 0, 0);
   
  //需要将Base64编码转换为Blob(一段二进制数据)对象 ,后才能生成文件下载 参考 http://javascript.ruanyifeng.com/htmlapi/file.html#toc0
  var blob = new Blob([Base64Binary.decodeArrayBuffer(canvas.toDataURL("image/png").substring(22))]); //删除字符串前的提示信息 "data:image/png;base64,"
  var a = document.createElement("a");
  a.href = window.URL.createObjectURL(blob);
  a.download = "test.png";
  a.textContent = "下载图片->";
  document.body.appendChild(a);
  //a.click();
  show();
  }
   
  //将图片显示在网页中
  function show(){
  var img = convertCanvasToImage(document.getElementById("canvas"));
  document.body.appendChild(img);
  }
   
  //将canvas变成图片png
  function convertCanvasToImage(canvas) {
  var image = new Image();
  image.style.border="1px solid blue";
  image.src = canvas.toDataURL("image/png");
  return image;
  }
  </script>
  <style>
  input[type=range]:before { content: attr(min); padding-right: 5px; }
  input[type=range]:after { content: attr(max); padding-left: 5px;}
  </style>
  </head>
  <body>
  <input id="range" type="range" name="range" min="100" max="500" step="100" value="100" />
  <canvas id="canvas" style="border:1px solid red;" width=500 height=500></canvas>
  <button onclick="go();">canvas转图片,再加载到右边canvas中</button>
  <canvas id="canvasimg" style="border:1px solid red;" width=500 height=500></canvas>
  </body>
  <script>
  //base64转Blob 地址 https://github.com/danguer/blog-examples/blob/master/js/base64-binary.js

canvas转图片的更多相关文章

  1. canvas学习笔记:canvas对图片的像素级处理--ImageData的应用

    学习了canvas的基本绘图功能后,惊喜的发现canvas对图片数据也有相当强大的处理功能,能够从像素级别操作位图,当然[lte ie8]不支持. 主要的函数有三个: ctx.createImageD ...

  2. 快速解决Canvas.toDataURL 图片跨域的问题

    出现Canvas.toDataURL 图片跨域问题怎么解决呢?下面小编就为大家带来一篇Canvas.toDataURL 图片跨域问题的快速解决方法.一起跟随小编过来看看吧 如题,在将页面的图片地址进行 ...

  3. 用canvas实现图片滤镜效果详解之灰度效果

    前面展示了一些canvas实现图片滤镜效果的展示,并且给出了相应的算法,下面来介绍一下具体的实现方法. 前面介绍的特效中灰度效果最简单,就从这里开始介绍吧. 1.获取图像数据 img.src = ’h ...

  4. 使用canvas进行图片裁剪简单功能

    1.html部分 使用一个input[type="file"]进行图片上传: canvas进行图片的裁剪展示 <div> <input type="fi ...

  5. 利用canvas 导出图片

    1.使用canvas绘制图片,并将图片导出. 在本地直接访问静态网页时,无法使用toDataURL(),需要将网页发布后,canvas才能使用toDataURL获取画布上的内容.因为canvas不允许 ...

  6. canvas将图片转为base64

    最简例子 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta ...

  7. [JavaScript] canvas 合成图片和文字

    Canvas Canvas 是 HTML5 新增的组件,就像一个画板,用 js 这杆笔,在上面乱涂乱画 创建一个 canvas <canvas id="stockGraph" ...

  8. canvas和图片之间的互相装换

    canvas和图片之间的互相装换 一.总结 一句话总结:一个是canvas的drawImage方法,一个是canvas的toDataURL方法 canvas drawImage() Image对象 c ...

  9. Canvas 实现图片合成并下载合成图片

    现在经常会遇到那种带二维码的推广图片,如下图所示: 1是整张推广图的背景,2是二维码.这种图片的背景是保持不变的,里面的二维码是变化的.所以我们需要把二维码单独生成然后与背景合并. 我们可以通过can ...

随机推荐

  1. 《精通Oracle SQL(第2版) 》

    <精通Oracle SQL(第2版) > 基本信息 作者: (美)Karen Morton    Kerry Osborne    Robyn Sands    Riyaj Shamsud ...

  2. Mac下使用XLD转换无损音乐Ape

    最近想要给音乐库增加一些音乐,下载了一些Ape格式的无损音乐,但是无法直接导入到iTunes中,必须经过其他工具转换成苹果的无损格式,XLD就是这样一款工具.XLD的下载和安装非常方便,直接将APP拖 ...

  3. [转]通过查看mysql 配置参数、状态来优化你的mysql

    From : http://wangwei007.blog.51cto.com/68019/967278 mysql的监控方法大致分为两类: 1.连接到mysql数据库内部,使用show status ...

  4. 《UNIX环境高级编程》笔记--环境变量

    ISO C定义了一个函数getenv,可以用其取环境变量值. #include <stdlib.h> char* getenv(const char* name); //返回与name关联 ...

  5. 在SharePoint Server 2010中更改“我的网站”

    在安装SharePoint Server 2010的时候,创建的第一个站点是一个“NetBIOS名称”的网站,而这个时候,“我的网站”(或称“个人网站”),也是基于此NetBIOS名称的,例如,如果你 ...

  6. java Field 二三事

    java在反射时候经常用到了 Field 类. 我认为代码是最好的解释,直接上代码. 首先,用到了一个bean类,源代码如下: package com.ncs;      public class P ...

  7. git学习一二三一

    svn用的多,但是我是一个geek,git这个美丽的scm,我怎能错过了?于是最近在全方位的窥视它的酮体,把我的一点心得分享给大家把. 先说一说给git的历史, Git是一个开源的分布式版本控制系统, ...

  8. UML图中聚合、组合、关联、依赖、泛化的强弱关系

    一.泛化 1.说明 泛化是一种继承关系,如果一个类A的所有属性和操作能被另一个类B所继承,则类B不仅可以包含自己独有的属性,而且可以包含类A的属性和操作.继承是类与类或者类与接口之间最常见的关系. 2 ...

  9. PLSQL Developer连接远程Oracle数据库

    要连接远程数据库,传统的一定可行的方法是在本地装一个oracle.然后使用"Network Configuration Assistant"配置.之后用PL/SQL Dev连接.由 ...

  10. Medline Plus

    提问地址: http://apps2.nlm.nih.gov/medlineplus/contact/index.cfm?lang=en&from=http://www.nlm.nih.gov ...