canvas toDataURL() 方法如何生成部分画布内容的图片

HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI 。可以使用 type参数其类型,默认为 PNG 格式。图片的分辨率为96dpi。

  • 如果画布的高度或宽度是0,那么会返回字符串"data:,"
  • 如果传入的类型非"image/png",但是返回的值以"data:image/png"开头,那么该传入的类型是不支持的。
  • Chrome支持"image/webp"类型。

语法

  canvas.toDataURL(type, encoderOptions);

参数

  type可选图片格式,默认为 image/png

  encoderOptions可选在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92。其他参数会被忽略。

返回值

  包含 data URI 的DOMString

示例

  简单生成图片

var canvas = document.getElementById("canvas");
var dataURL = canvas.toDataURL();
console.log(dataURL);
// "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNby
// blAAAADElEQVQImWNgoBMAAABpAAFEI8ARAAAAAElFTkSuQmCC"

  设置图片质量

var fullQuality = canvas.toDataURL("image/jpeg", 1.0);
// data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...9oADAMBAAIRAxEAPwD/AD/6AP/Z"
var mediumQuality = canvas.toDataURL("image/jpeg", 0.5);
var lowQuality = canvas.toDataURL("image/jpeg", 0.1);

  截取canvas部分内容

  toDataURL() 是将整个canvas的内容导出,很多时候我们只需要截图canvas中的部分内容,这个时候可以通过 getImageData() 复制画布上指定矩形的像素数据,然后通过 putImageData() 将图像数据放回某个设定了图片相同尺寸的新画布中,然后再使用toDataURL()导出图片。

  具体操作代码及效果如下:

原文地址:https://www.cnblogs.com/fangsmile/p/10095504.html

时间: 2024-10-12 02:20:30

canvas toDataURL() 方法如何生成部分画布内容的图片的相关文章

canvas toDataURL转base64实现多张图片合成一个图片

前端时间,做穿搭助理时遇到这样一个问题:多张图片合成一张图片的问题 业务背景是这样的: 后台会根据不同天气,根据某种规则:推荐给用户不同的衣服搭配.我们姑且将每一套我们称之为    一个模板; 然后,还要求模板的布局按照衣服的类型,模板不同的布局方案 现在大概模板类型有如下几个(后期还会加) 本来,计算,定位这个模板已经够头疼了的:现在产品说这个加入衣橱操作要把整个模板合成一张图,放到衣橱图片库中 还好之间简单看过<H5高级程序设计>貌似提到了,可以直接将canvas转成图片的方法: wsc上

html5 canvas+原生javascript 实时获取文本框内容绘制图片水印

最近有位客户要求在网页图片上加文字水印效果,并且内容是从当前网页的文本输入框实时获取的,研究了一半天,在网上也参考了不少朋友的办法,再加上园子里热心的好哥们帮助终于实现了,先看下效果图: 代码如下: 1 <!DOCTYPE html> 2 <head> 3 <meta charset="UTF-8"> 4 <title>drawing by input text</title> 5 </head> 6 7 <

将Canvas画布内容保存为jpg格式图片

/// <summary>        /// 功能:将Canvas画布内容保存为jpg格式图片        /// 作者:GYS | 日期:2013年9月9日        /// </summary>        /// <param name="filePath"></param>        /// <param name="pixBox"></param>        pri

使用canvas及js简单生成验证码方法

我们在做开发的时候会经常涉及到验证码,前端的验证码需要用到HTML5中的canvas的知识点,然后再结合js来控制验证数字就可以达到验证码的效果了. 随机生成一张canvas画布 生成随机验证码 在画布中随机生成干扰线 把随机验证码放到画布上面 点击更换验证码 结构与样式: 1 <style> 2 #mycanvas{ 3 cursor: pointer;/*光标为手型*/ 4 } 5 </style> 6 </head> 7 <body> 8 <ca

canvas.toDataURL 由于跨域报错的解决方法

关于canvas.toDataURL 由于跨域报错的解决方法 用过canvas,都知道toDataURL这个方法真好用,不仅合成图片用到它,压缩图片也用到它.但有一个问题,就是图片源不能跨域,不然会报错: Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported. 解决方法,相信大家都知道了,就是在图片img加上crossOri

Canvas绘图方法和图像处理方法(转)

转自:http://javascript.ruanyifeng.com/htmlapi/canvas.html 概述 Canvas API(画布)用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap). 使用前,首先需要新建一个canvas网页元素. <canvas id="myCanvas" width="400" height="200"> 您的浏览器不支持canvas!

canvas.toDataURL(type, args)

canvas.toDataURL(type, args)该方法能够将canvas转换为图像,图像是基于Base64编码的.如果不指定两个参数,无参数调用该方法,转换的图像格式为png格式 •type:指定要转换的图像格式,如 image/png.image/jpeg等.•args:可选参数.例如,如果type为image/jpeg,则args可以是0.0和0.1之间的值,以指定图像的品质. 例如,下面的代码将canvas中已绘制的内容在一个新的浏览器窗口或选项卡中打开: var canvas =

Canvas 属性,方法

context . restore() //弹出堆最上面保存的绘图状态 context . save() //在绘图状态堆上保存当前绘图状态 绘图状态可以看作当前画面应用的所有样式和变形的一个快照.而状态的应用则可以避免绘图代码的过度膨胀. 转换(Transformations) context . rotate(angle)  //按给定的弧度旋转,按顺时针旋转 context . scale(x, y) //按给定的缩放倍率缩放,1.0,为不变 context . setTransform(

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

出现Canvas.toDataURL 图片跨域问题怎么解决呢?下面小编就为大家带来一篇Canvas.toDataURL 图片跨域问题的快速解决方法.一起跟随小编过来看看吧 如题,在将页面的图片地址进行本地输出时(Html2Canvas.js),因不同源存在跨域问题,会出现toDataURL访问权限问题: [Redirect at origin 'http://sub1.xx.com' has been blocked from loading by Cross-Origin Resource S