canvas画布导出图片并下载
近期在学习关于画布知识,关于 画布导出图片,
在导出jpeg格式的图片时,会发现图片背景色变成了黑色,原因是画布透明的地方 默认转成了黑色,可以在绘制画布前设置透明处背景色为白色。
// 背景色转换成白色
ctx.fillStyle = "#fff";
ctx.fillRect(0, 0, c.width, c.height);
<!-- 一个画布在网页中是一个矩形框,通过 <canvas> 元素来绘制. -->
<!-- HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. -->
<!-- <canvas> 标签只是图形容器,您必须使用脚本来绘制图形。 -->
<canvas id="canvas"></canvas>
<button class="button-balanced" id="save">转换</button>
<a href="" download="canvas_love.jpeg" id="save_herf">
<img src="" id="save_img" alt=""> </a>
var c = document.getElementById("canvas");
function drawLove(canvas) {
let ctx = canvas.getContext("2d");
ctx.beginPath();
// 背景色转换成白色
ctx.fillStyle = "#fff";
ctx.fillRect(0, 0, c.width, c.height);
// ctx.drawImage(img, 0, 0);
ctx.fillStyle = "#E992B9";
ctx.moveTo(75, 40);
ctx.bezierCurveTo(75, 37, 70, 25, 50, 25);
ctx.bezierCurveTo(20, 25, 20, 62.5, 20, 62.5);
ctx.bezierCurveTo(20, 80, 40, 102, 75, 120);
ctx.bezierCurveTo(110, 102, 130, 80, 130, 62.5);
ctx.bezierCurveTo(130, 62.5, 130, 25, 100, 25);
ctx.bezierCurveTo(85, 25, 75, 37, 75, 40);
ctx.fill();
}
drawLove(c);
var butSave = document.getElementById("save");
console.log(butSave)
butSave.onclick = function () {
// alert('123')
var svaeHref = document.getElementById("save_herf");
/*
* 传入对应想要保存的图片格式的mime类型
* 常见:image/png,image/gif,image/jpg,image/jpeg
*/
var img = document.getElementById("save_img");
var tempSrc = canvas.toDataURL("image/jpeg");
// console.log(tempSrc)
svaeHref.href = tempSrc; // a 标签的 href 地址
img.src = tempSrc;
};
CanvasRenderingContext2D 接口提供的 2D 渲染背景用来绘制<canvas>元素,为了这个接口的对象,需要在 <canvas> 上调用 getContext() ,并提供一个 "2d" 的参数:
toDataURL()这个方法能把画布里的图案转变成base64编码格式的png,然后返回 Data URL数据
canvas画布导出图片并下载的更多相关文章
- 微信小程序--canvas画布实现图片的编辑
技术:微信小程序 概述 上传图片,编辑图片大小,添加文字,改变文字颜色等 详细 代码下载:http://www.demodashi.com/demo/14789.html 概述 微信小程序--ca ...
- canvas.toDataURL 画布导出图片
<html> <meta http-equiv="X-UA-Compatible" content="chrome=1"> <he ...
- js将canvas保存成图片并下载
<canvas id="canvas" width="400" height="400"></canvas> < ...
- 基于Vue的v-charts导出图片并下载
依赖 npm install file-saver 页面 <ve-chart ref="chart"></ve-chart> <el-button t ...
- 将canvas画布内容转化为图片(toDataURL(),创建url)
将canvas画布内容转化为图片(toDataURL(),创建url) 总结 1.现在的浏览器都支持右键另存为图片的方法来将canvas画布内容转化为图片 2.在代码里面可以通过toDataURL() ...
- [技术博客]海报图片生成——小程序canvas画布
目录 背景介绍 canvas简介 代码实现 难点讲解 圆角矩形裁剪失败之PS的妙用 编码不要过硬 对过长的文字进行截取 真机首次生成时字体不对 drawImage只能使用本地图片 背景介绍 目标:利用 ...
- 微信小程序 canvas导出图片模糊
//保存到手机相册save:function () { wx.canvasToTempFilePath({ x: , y: , width: , //导出图片的宽 height: , //导出图片的高 ...
- js 画布与图片的相互转化(canvas与img)
使用js将图片拷贝进画布 //将图片对象转化为画布,返回画布function ImageToCanvas(image) { var canvas = document.createElement(&q ...
- html页面、canvas导出图片
背景:项目现场提出将一个html做的图形页面导出为一张图片的需求,在网上搜了一下,发现都不是很全面,所以综合了很多大神的帖子,自己再次封装,以适用项目需求. 所需js库:html2canvas.js( ...
随机推荐
- Apache Hadoop集群离线安装部署(三)——Hbase安装
Apache Hadoop集群离线安装部署(一)——Hadoop(HDFS.YARN.MR)安装:http://www.cnblogs.com/pojishou/p/6366542.html Apac ...
- centos6.5大于2T容量硬盘分区、格式化、挂载!
一. 超过2T容量硬盘使用parted创建分区 1.fdisk l(查看需要分区的硬盘盘符如:sda) 2.parted /dev/sda 3.rm 1 4.mklabel gpt(超过2T磁盘格式 ...
- RMI远端方法调用
一.RMI介绍 RMI(Remote Method Invocation),RMI是分布式对象软件包,它简化了在多台计算机上的JAVA应用之间的通信.必须在jdk1.1以上,RMI用到的类:java. ...
- PHP实现上传视频的功能
首先前台HTML表单代码如下: <html> <head> <meta http-equiv="Content-Type" content=" ...
- zabbix之自动注册,编写触发器:一定时间内超过某个负载值的时间
zabbix中添加主机很多时可以考虑自动注册来自动添加,下面按照图片顺序来看,zabbix版本:3.0.28 超过负载30%的持续时间 创建触发器:
- leetcode-回溯②-难题
题10: 回溯:另:动态规划复杂度更低 class Solution: def isMatch(self, s: str, p: str) -> bool: def helper(s,p): i ...
- 阿里云HBase全新发布X-Pack NoSQL数据库再上新台阶
一.八年双十一,造就国内最大最专业HBase技术团队 阿里巴巴集团早在2010开始研究并把HBase投入生产环境使用,从最初的淘宝历史交易记录,到蚂蚁安全风控数据存储.持续8年的投入,历经8年双十一锻 ...
- Shiro学习(20)无状态Web应用集成
在一些环境中,可能需要把Web应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像会话这种东西,而是每次请求时带上相应的用户名进行登录.如一些REST风格的API,如果不使用OAuth2协议, ...
- Android中的surfaceHolder.lockCanvas(null)返回为null详解
对于新手学习SurfaceView的时候获取lockCanvas的时候总是返回null的问题很是纠结 canvas = surfaceHolder.lockCanvas(new Rect(0, 0, ...
- LIBRARY_PATH是编译时候用的,LD_LIBRARY_PATH是程序运行是使用的
LD_LIBRARY_PATH与LIBRARY_PATH的区别 看起来很像,但是完全是两码事. LIBRARY_PATH is used by gcc before compilation to se ...