function ImgToBase64(url, callback, outputFormat) {  // outputFormat 用于指定输出格式的,遵循 MIME 标准
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function () {
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0);
const quality = 0. 7; // 压缩的的关键所在,压缩比例
var dataURL = canvas.toDataURL(outputFormat || 'image/jpeg',quality ); // 指定输出格式的地方,遵循 MIME 标准
callback.call(this, dataURL, img);
canvas = null;
};
img.src = url;
}
// 调用函数
ImgToBase64('http://7x2wdd.com2.z0.glb.qiniucdn.com/8eb43ae8fcbc01e130562908e6629bbe?imageMogr2/thumbnail/500%3E', function (base64, img) {
// Base64DataURL
img.src = base64;
document.querySelector('#img').appendChild(img);
});
  • 如此便可以将图片以 base64 的形式展示出来了,至于之后是要保存还是怎么做就随你啦!
  • 这里转自 ting_125的博客

转本地图片

    function convertImgToBase64(url, callback, outputFormat){
var canvas = document.createElement('CANVAS');
var ctx = canvas.getContext('2d');
var img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function(){
var width = img.width;
var height = img.height;
// 按比例压缩4倍
var rate = (width<height ? width/height : height/width)/4;
canvas.width = width*rate;
canvas.height = height*rate;
ctx.drawImage(img,0,0,width,height,0,0,width*rate,height*rate);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
callback.call(this, dataURL);
canvas = null;
};
img.src = url;
} function getObjectURL(file) {
var url = null ;
if (window.createObjectURL!=undefined) { // basic
url = window.createObjectURL(file) ;
} else if (window.URL!=undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(file) ;
} else if (window.webkitURL!=undefined) { // web_kit or chrome
url = window.webkitURL.createObjectURL(file) ;
}
return url ;
}
// 前端只需要给input file绑定这个change事件即可(上面两个方法不用管)huodong-msg为input class
$('.huodong-msg').bind('change',function(event){
var imageUrl = getObjectURL($(this)[0].files[0]);
convertImgToBase64(imageUrl, function(base64Img){
// base64Img为转好的base64,放在img src直接前台展示(<img src="data:image/jpg;base64,/9j/4QMZRXh...." />)
alert(base64Img);
// base64转图片不需要base64的前缀data:image/jpg;base64
alert(base64Img.split(",")[1]);
});
event.preventDefault();
});

最新文章

  1. vb上位机模拟电压监测系统
  2. BZOJ 4548 小奇的糖果
  3. error: Error retrieving parent for item: No resource found that matches the given name &#39;Theme.AppCompat.Light&#39;.
  4. 电赛总结(二)&mdash;&mdash;AD芯片总结之AD7705
  5. php 的 构造函数 和 析构函数
  6. Day11 - Mysql and ORM
  7. Ubuntu下安装Intel Fortran编译器(ifort)
  8. 巧用ajax请求服务器加载数据列表时提示loading
  9. Xcode中StoryBoard Reference 新特性的使用
  10. Spring Cloud Config(配置中心)
  11. 如何seo(搜索引擎优化)
  12. ActiveMQ_2安装
  13. iOS视频流开发(1)—视频基本概念
  14. Mongo 用户创建及权限管理
  15. 学习-工作:GTD
  16. 【poj1850】 Code 数位dp+记忆化搜索
  17. 学习tp5的第二天(路由)
  18. CSS隐藏元素 display visibility opacity的区别
  19. 使用mac电脑,对Github客户端的简单操作1----开源项目
  20. jQuery上传插件Uploadify使用介绍

热门文章

  1. 7 . 动态sql-choose
  2. react 什么是虚拟DOM?深入了解虚拟DOM
  3. js 返回 差 集
  4. Html背景图
  5. Linux下Redis安装使用,主从模式,哨兵模式与PHP扩展(PHP7适用)
  6. php中静态绑定
  7. asp.net core 标签验证函数功能
  8. Python Pandas -- Panel
  9. SQL 还原或备份失败数据库变成单个用户模式无法访问
  10. Mybatis学习笔记11 - 动态sql之trim标签