html下纯JS实现图片压缩、预览、图片Base64转换

 1 function ImgToBase64(file, maxLen, callBack) {
 2     var img = new Image();
 3
 4     var reader = new FileReader();//读取客户端上的文件
 5     reader.onload = function () {
 6         var url = reader.result;//读取到的文件内容.这个属性只在读取操作完成之后才有效,并且数据的格式取决于读取操作是由哪个方法发起的.所以必须使用reader.onload,
 7         img.src = url;//reader读取的文件内容是base64,利用这个url就能实现上传前预览图片
 8     };
 9     img.onload = function () {
10         //生成比例
11         var width = img.width, height = img.height;
12         //计算缩放比例
13         var rate = 1;
14         if (width >= height) {
15             if (width > maxLen) {
16                 rate = maxLen / width;
17             }
18         } else {
19             if (height > maxLen) {
20                 rate = maxLen / height;
21             }
22         };
23         img.width = width * rate;
24         img.height = height * rate;
25         //生成canvas
26         var canvas = document.createElement("canvas");
27         var ctx = canvas.getContext("2d");
28         canvas.width = img.width;
29         canvas.height = img.height;
30         ctx.drawImage(img, 0, 0, img.width, img.height);
31         var base64 = canvas.toDataURL(‘image/jpeg‘, 0.9);
32         callBack(base64);
33     };
34     reader.readAsDataURL(file);
35 }

调用方式:

 1 $(function () {
 2         $("#img").change(function () {
 3             var file = $(this)[0].files[0];//获取input file控件选择的文件
 4
 5             ImgToBase64(file, 720, function (base64) {
 6                 $("#img1")[0].src = base64;//预览页面上预留一个img元素,载入base64
 7                 $("#img1")[0].width = 300;//设定宽高,不然会自动按照压缩过的图片宽高设定,有可能超出预想的范围。           //直接利用ajax上传base64到服务器,完毕
 8             });
 9         })
10     })
时间: 2024-11-09 14:28:45

html下纯JS实现图片压缩、预览、图片Base64转换的相关文章

单张图片在线预览+图片压缩

该方法未测试浏览器兼容性,仅在谷歌上进行过测试. 图片在线预览:一般思路是通过获取file上的绝对路径并将路径赋值给src实现在线预览功能,但现实中的浏览器,尤其是高版本浏览器由于用户安全性考虑,不会让开发者通过file获取到绝对路径,因此使用H5中的画板功能,将图片进行重绘后,得到base64编码的dataURL,再将这个地址赋值给src实现在线预览功能. 图片压缩原理:将大图根据预定尺寸进行尺寸修改. <!DOCTYPE html> <html lang="en"

巧用weui.gallery(),点击图片后预览图片

要在页面需要加载的JS文件: <script src="../js/libs/weui.min.js"></script> 可以去weui的文档中下载,这是它的demo:   https://weui.io/weui.js/ 要先给图片创建一个节点: var imgDom = $("<img class='weui-jiaj-img' />"); 因为接口中取到的图片会是很多,因此,在循环图片数据的时候,要给每个图片添加一个动态的

js上传和预览图片

[1].[代码] [HTML]代码 跳至 [1] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <meta

js上传并且预览图片

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src = "jquery.js"></script> </head> <bod

使用JCrop进行图片裁剪,裁剪js说明,裁剪预览,裁剪上传,裁剪设计的图片处理的工具类和代码

?? 1.要想制作图片裁剪功能,可以使用网上的裁剪工具JCrop,网址是:https://github.com/tapmodo/Jcrop/ 案例效果如下: 2.引入JCrop的js代码,具体要引入那些js可以参考JCrop案例: 3.编写的html代码如下: <div id="light" class="white_content"> <div class="vatitlee"> 封面截取 <div class=&

cropper.js实现图片裁剪预览并转换为base64发送至服务端。

一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时记得引入cropper.css 3. 此处后端使用的nodejs,不过不懂node的影响也不大. 二 . 图片裁剪并预览 1.首先利用cropper完成图片裁剪并预览: <input type="file" name="" id="imgBtn"

js 本地预览图片和得到图片实际大小

//填充预览图片 function adpter(file, upfile) { var imgName = new Date().getTime() + file.name.substr(file.name.lastIndexOf('.')); if (file) { if (file.type.indexOf('image') == 0) { var reader = new FileReader(); reader.onload = function (e) { var image1 =

微信小程序预览图片

选择图片时可设置图片是否是原图,图片来源.这用的也挺常见的,比如个人中心中设置头像,可以与wx.upLoadFile()API使用 主要方法: wx.chooseImage(object) wxml <!--监听按钮--> <button type="primary" bindtap="listenerButtonChooseImage">点击我选择相册</button> <!--通过数据绑定的方式动态获取js数据-->

js实现上传图片本地预览功能

js: /**     * 上传图片本地预览方法     * @param {Object} fileObj 上传文件file的id元素  fresh-fileToUpload      * @param {Object} previewObj 上传图片的预览id元素  fresh-send-preview-img     * @param {Object} localImg 预览图片的父层id元素  fresh-send-preview-imgvideo     */    fs.setIma