最近在做一个上传头像然后保存显示的功能,因为涉及到裁剪大小和尺寸比例,所以直接上传图片再展示的话,就会出现问题,所以就想用canvas来渲染裁剪后的图片,然后转化成base64格式的图片再存储,这样取用的时候也比较方便。

我写了一个demo来展示一下怎么把一张图片渲染成canvas图片,并转化为base64格式导出。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<canvas id='canvas'></canvas>
<script src="~/Scripts/jquery-3.3.1.js"></script>
<script>
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');//返回一个用于在画布上绘图的环境,当前唯一的合法值是 "2d",它指定了二维绘图,返回一个 CanvasRenderingContext2D 对象,使用它可以绘制到 Canvas 元素中 var url = '/Content/images/demo.jpg';//图片URL
var urlNumber = ;//要渲染的图片数
var w = ;//canvas的宽
var h = ;//canvas的高 var img = new Image();
img.crossOrigin = 'Anonymous';//解决Canvas.toDataURL 图片跨域问题
img.src = url; //渲染方法
var imgs = function () {
context.drawImage(img, , , w, h);
//导出
var base64Img = canvas.toDataURL('image/jpg');
console.log(base64Img);
} img.onload = function () {
urlNumber -= ;
if (urlNumber === ) {
imgs();
}
}
</script>
</body>
</html>

运行程序,查看控制台记录的base64格式图片:

如果要传到后台,就以字符串的形式保存就好了;取用的时候也是直接取字符串。

/****************************我是可爱的分割线*************************************/

最新文章

  1. 高灵活度,高适用性,高性能,轻量级的 ORM 实现
  2. windows信息
  3. 【HDOJ】1688 Sightseeing
  4. Windows kernel pool 初探(2014.12)
  5. redis集群原理
  6. 常见优化算法统一框架下的实现:最速下降法,partan加速的最速下降法,共轭梯度法,牛顿法,拟牛顿法,黄金分割法,二次插值法
  7. IntelliJ IDEA安装配置
  8. R leaflet
  9. 【国庆】记一次mysqld_safe引发mysql进程故障
  10. 弹窗查看内容时 内容滚动区域设置为body区
  11. docker学习笔记(四)-持久化数据,安装docker-compose
  12. CRM 2013 批量更新two options的缺省值
  13. Java 输入/输出——Java虚拟机读写其它进程的数据
  14. Android井字游戏(一)首页制作
  15. Google、亚马逊、微软 、阿里巴巴开源软件一览
  16. java设计模式--七大原则
  17. Java SSL证书的安装
  18. Unix系统编程()虚拟内存管理
  19. Ubuntu连接手机步骤
  20. Spring - 几种RPC模型的使用与比较

热门文章

  1. swift 再识枚举变量
  2. Luogu P1550 打井Watering Hole
  3. Scrapy实战:使用scrapy再再次爬取干货集中营的妹子图片
  4. copy and rename a file multiple times using Matlab
  5. webstorm+nodejs环境中安装淘宝镜像
  6. ganglia问题小结
  7. Solr插件的弊端
  8. hdu_1019_Least Common Multiple_201310290920
  9. MySQL的limit用法及优化(转)
  10. 搭建LVS+Keepalived负载均衡集群