HTML5 JS压缩图片并获取图片BASE64编码上传

作者:青柠

时间:2026-10-31

浏览:319

本文介绍利用HTML5和JavaScript实现图片压缩及BASE64编码上传的完整流程。通过FileReader读取用户选择的图片,利用Canvas的drawImage方法调整图片大小,最后通过toDataURL方法生成BASE64字符串并发送至服务端。

文章目录

HTML5 JS压缩图片并获取图片BASE64编码上传

本文分享了一种基于HTML5和JavaScript的图片压缩及BASE64编码上传方案,供读者参考。

实现流程概述

首先,调用FileReader对象的readAsDataURL方法读取用户选择的图片文件,并在其onload回调中将读取到的数据加载到Image对象中。

接着,在Image对象的onload事件中,获取Canvas的2D绘图上下文(getContext('2d')),利用drawImage方法将Image对象按指定尺寸绘制到Canvas画布上,从而实现图片缩放。

最后,调用Canvas的toDataURL方法,指定图片格式为image/jpeg且质量参数为0.1,将Canvas内容转换为BASE64编码字符串,随后将该字符串发送至服务器端进行处理。


var vueImg = new Vue({
  el: "#divCarImages",
  data: { model: { carId: '@carId', imageTitle:'',img64:'' }, images: [] },
  methods: {
   imageHandle: function () {
    var fup = $("#fileImg")[0];

    var img = fup.files[0];

    var image = new Image();
    var canvas = $("#canvas")[0];//document.createElement("canvas");
    var ctx = canvas.getContext('2d');

    image.onload = function () {
     var w = image.naturalWidth,
      h = image.naturalHeight;

     var toSize = 400;
     canvas.width = toSize;
     canvas.height = toSize;

     var w2 = toSize, h2 = toSize;
     if (w > h) {
      h2 = h / w * toSize;
     } else {
      w2 = w / h * toSize;
     }

     ctx.drawImage(image, 0, 0, w, h, 0, 0, w2, h2);
      
    }

    // 判断是否图片
    if (!img) {
     return;
    }

    // 判断图片格式
    if (!(img.type.indexOf('image') == 0 && img.type && /\.(?:jpg|png|gif)$/.test(img.name))) {
     alert('图片只能是jpg,gif,png');
     return;
    }

    var reader = new FileReader();

    reader.onload = function (e) { // reader onload start
     var url = reader.result;
     image.src = url;

    } // reader onload end

    reader.readAsDataURL(img);
   }

  }
 });

function uploadImg() {
  var canvas = $("#canvas")[0];
  vueImg.model.img64 = canvas.toDataURL("image/jpeg", 0.1);
  //$("#testMsg").html(imgData.length);
      
  // ajax 上传图片
  $.post("@Url.Content("~/AliOss/SaveCarImage")", vueImg.model , function (ret) {

   parseAjaxData(data, function (model) {
    console.log(model.Path);
    alert(model.Path);
    $('#showimg').html('<img src="' + model.Path + '">');
   })  
  }, 'json');
 }

以上即为本文介绍的全部内容,希望对相关技术学习有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章