canvas转图片
<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转图片的更多相关文章
- canvas学习笔记:canvas对图片的像素级处理--ImageData的应用
学习了canvas的基本绘图功能后,惊喜的发现canvas对图片数据也有相当强大的处理功能,能够从像素级别操作位图,当然[lte ie8]不支持. 主要的函数有三个: ctx.createImageD ...
- 快速解决Canvas.toDataURL 图片跨域的问题
出现Canvas.toDataURL 图片跨域问题怎么解决呢?下面小编就为大家带来一篇Canvas.toDataURL 图片跨域问题的快速解决方法.一起跟随小编过来看看吧 如题,在将页面的图片地址进行 ...
- 用canvas实现图片滤镜效果详解之灰度效果
前面展示了一些canvas实现图片滤镜效果的展示,并且给出了相应的算法,下面来介绍一下具体的实现方法. 前面介绍的特效中灰度效果最简单,就从这里开始介绍吧. 1.获取图像数据 img.src = ’h ...
- 使用canvas进行图片裁剪简单功能
1.html部分 使用一个input[type="file"]进行图片上传: canvas进行图片的裁剪展示 <div> <input type="fi ...
- 利用canvas 导出图片
1.使用canvas绘制图片,并将图片导出. 在本地直接访问静态网页时,无法使用toDataURL(),需要将网页发布后,canvas才能使用toDataURL获取画布上的内容.因为canvas不允许 ...
- canvas将图片转为base64
最简例子 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta ...
- [JavaScript] canvas 合成图片和文字
Canvas Canvas 是 HTML5 新增的组件,就像一个画板,用 js 这杆笔,在上面乱涂乱画 创建一个 canvas <canvas id="stockGraph" ...
- canvas和图片之间的互相装换
canvas和图片之间的互相装换 一.总结 一句话总结:一个是canvas的drawImage方法,一个是canvas的toDataURL方法 canvas drawImage() Image对象 c ...
- Canvas 实现图片合成并下载合成图片
现在经常会遇到那种带二维码的推广图片,如下图所示: 1是整张推广图的背景,2是二维码.这种图片的背景是保持不变的,里面的二维码是变化的.所以我们需要把二维码单独生成然后与背景合并. 我们可以通过can ...
随机推荐
- ios nil、NULL和NSNull 的使用
nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的met ...
- 【docker】docker的简单状态监控
命令: docker stats 可以使用占位符,显示想要看的信息: docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{ ...
- .NET:一微秒内可能执行多条 DateTime.Now
出现BUG的上下文 自己写的工作流引擎出现了一点问题,就是因为可能存在一个请求同时流转两个节点(不必深究这个问题),因为每个节点都有一个“进入时间”,引擎的实现将最后一个“进入时间“对应的节点当作了” ...
- OCP-1Z0-051-题目解析-第22题
22. You need to create a table for a banking application. One of the columns in the table has the fo ...
- 替换NSUserDefaults的方案
替换NSUserDefaults的方案 效果 源码 https://github.com/YouXianMing/iOS-Utilities // // BaseValueStorageManager ...
- C#泛型委托Predicate、Action、Func
Predicate Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素.通过查看源码发现 Pr ...
- ProgressBar学习笔记,自定义横向进度条的样式(包含ActionBar上面的进度条)
点显示进度条后→ android:max="100" 进度条的最大值 android:progress 进度条已经完成的进度值 android:progressDrawab ...
- [Web 前端] MobX
1. 介绍 1.1. 原理 React的render是 状态 转化为树状结构的渲染组件的方法 而MobX提供了一种存储,更新 状态 的方法 React 和 MobX都在优化着软件开发中相同的问题. R ...
- 关于GreenPlum的一些整理
Greenplum数据库架构 Greenplum数据库基本由PostgreSQL核心增强数据库实例组合并衔接成的数据库管理系统,即Greenplum数据在PostgreSQL基础上扩展开发,每个Gre ...
- Matlab中使用LaTeX
Matlab作为数据计算和处理的数学语言(软件),而LaTex作为出版界的重要排版语言(软件),尤其是对数学公式的排版功能特别强.在Matlab中有两种方法使用LaTeX:1)对Matlab生成的图形 ...