博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTMLCanvasElement.toDataURL()
阅读量:6569 次
发布时间:2019-06-24

本文共 2309 字,大约阅读时间需要 7 分钟。

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

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

语法

canvas.toDataURL(type, encoderOptions);

参数

type 
可选
图片格式,默认为 
image/png
encoderOptions 
可选
图片质量。取值范围为 
0 到 
1 。如果指定图片格式为 
image/jpeg 或 
image/webp。如果超出取值范围,将会使用默认值 
0.92。其他参数会被忽略。

返回值

包含  的。

示例

有如下元素

可以用这样的方式获取一个 data-URL

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

设置jpegs图片的质量

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);

示例:动态更改图片

可以使用鼠标事件来动态改变图片(这个例子中改变图片灰度)。

HTML

Description of my picture
window.addEventListener("load", removeColors);function showColorImg() {  this.style.display = "none";  this.nextSibling.style.display = "inline";}function showGrayImg() {  this.previousSibling.style.display = "inline";  this.style.display = "none";}function removeColors() {  var aImages = document.getElementsByClassName("grayscale"),      nImgsLen = aImages.length,      oCanvas = document.createElement("canvas"),      oCtx = oCanvas.getContext("2d");  for (var nWidth, nHeight, oImgData, oGrayImg, nPixel, aPix, nPixLen, nImgId = 0; nImgId < nImgsLen; nImgId++) {    oColorImg = aImages[nImgId];    nWidth = oColorImg.offsetWidth;    nHeight = oColorImg.offsetHeight;    oCanvas.width = nWidth;    oCanvas.height = nHeight;    oCtx.drawImage(oColorImg, 0, 0);    oImgData = oCtx.getImageData(0, 0, nWidth, nHeight);    aPix = oImgData.data;    nPixLen = aPix.length;    for (nPixel = 0; nPixel < nPixLen; nPixel += 4) {      aPix[nPixel + 2] = aPix[nPixel + 1] = aPix[nPixel] = (aPix[nPixel] + aPix[nPixel + 1] + aPix[nPixel + 2]) / 3;    }    oCtx.putImageData(oImgData, 0, 0);    oGrayImg = new Image();    oGrayImg.src = oCanvas.toDataURL();    oGrayImg.onmouseover = showColorImg;    oColorImg.onmouseout = showGrayImg;    oCtx.clearRect(0, 0, nWidth, nHeight);    oColorImg.style.display = "none";    oColorImg.parentNode.insertBefore(oGrayImg, oColorImg);  }}

 

转载地址:http://zepjo.baihongyu.com/

你可能感兴趣的文章
vim锁定屏幕
查看>>
实用的 JavaScript 调试小技巧
查看>>
027移除元素
查看>>
Linux下清理内存和Cache方法
查看>>
CodeVS 1018 单词接龙(DFS)
查看>>
我的博客园的CSS和html设置
查看>>
工作中简单的kettle使用
查看>>
spark shuffle:分区原理及相关的疑问
查看>>
Laravel5.5 使用第三方Vendor添加注册验证码
查看>>
06- Linux下sublime下载与使用
查看>>
前端文摘:Web 开发模式演变历史和趋势
查看>>
将图片序列转化为视频文件
查看>>
jQuery的文档操作***
查看>>
js 小数取整,js 小数向上取整,js小数向下取整
查看>>
vue-cli3.0
查看>>
window.location.replace vs window.location.href
查看>>
CVPR 2018:阿里提出应用 LocalizedGAN 进行半监督训练
查看>>
被劫持的wordpress.com账户被用来感染站点
查看>>
分享一下最近看的东西
查看>>
《大数据、小数据、无数据:网络世界的数据学术》一 第2章 何为数据 2.1 引言...
查看>>