HTML5 JS 压缩图片,并取得图片的BASE64编码上传

基本过程

1) 调用 FileReaderreader.readAsDataURL(img); 方法, 在其onload事件中, 将用户选择的图片读入 Image对象.

2) 在image对象的 onload 事件中, 通过 canvas 的 canvas.getContext('2d') 的 drawImage 方法, 将Image 改变大小绘制到canvas上.

3) 通过 canvas.toDataURL("image/jpeg", 0.1); 方法, 将图片变成base64字符串, 传入服务端.

 1     var vueImg = new Vue({
 2         el: "#divCarImages",
 3         data: { model: { carId: '@carId', imageTitle:'',img64:'' }, images: [] },
 4         methods: {
 5             imageHandle: function () {
 6                 var fup = $("#fileImg")[0];
 7 
 8                 var img = fup.files[0];
 9 
10                 var image = new Image();
11                 var canvas = $("#canvas")[0];//document.createElement("canvas");
12                 var ctx = canvas.getContext('2d');
13 
14                 image.onload = function () {
15                     var w = image.naturalWidth,
16                         h = image.naturalHeight;
17 
18                     var toSize = 400;
19                     canvas.width = toSize;
20                     canvas.height = toSize;
21 
22                     var w2 = toSize, h2 = toSize;
23                     if (w > h) {
24                         h2 = h / w * toSize;
25                     } else {
26                         w2 = w / h * toSize;
27                     }
28 
29                     ctx.drawImage(image, 0, 0, w, h, 0, 0, w2, h2);
30                      
31                 }
32 
33                 // 判断是否图片
34                 if (!img) {
35                     return;
36                 }
37 
38                 // 判断图片格式
39                 if (!(img.type.indexOf('image') == 0 && img.type && /.(?:jpg|png|gif)$/.test(img.name))) {
40                     alert('图片只能是jpg,gif,png');
41                     return;
42                 }
43 
44                 var reader = new FileReader();
45 
46                 reader.onload = function (e) { // reader onload start
47                     var url = reader.result;
48                     image.src = url;
49 
50                 } // reader onload end
51 
52                 reader.readAsDataURL(img);
53             }
54 
55         }
56     });
 1     function uploadImg() {
 2         var canvas = $("#canvas")[0];
 3         vueImg.model.img64 = canvas.toDataURL("image/jpeg", 0.1);
 4         //$("#testMsg").html(imgData.length);
 5                      
 6         // ajax 上传图片
 7         $.post("@Url.Content("~/AliOss/SaveCarImage")", vueImg.model , function (ret) {
 8 
 9             parseAjaxData(data, function (model) {
10                 console.log(model.Path);
11                 alert(model.Path);
12                 $('#showimg').html('<img src="' + model.Path + '">');
13             })       
14         }, 'json');
15     }

 原文地址: http://www.cnblogs.com/ybst/p/6033199.html

原文地址:https://www.cnblogs.com/ybst/p/6033199.html