【问题标题】:Image size incrases in base64 formatbase64 格式的图像大小增加
【发布时间】:2019-10-17 05:16:59
【问题描述】:

我有一个只接受图像的简单输入文件。我想在上传任何小于 2mb 大小的图像时显示成功消息。但是当我选择图像并检查元素时,图像正在转换为 base64 格式,并且 base64 字符串的大小超过(4/3 比率)图像的实际大小。

我的问题是
1.如何保持与实际图片大小一致?
2. 有没有其他办法解决。

我的代码是:

<input type="file" onchange="uploadImage(event)" />

jQuery

function uploadImage(event){
var fileReader = new FileReader();

if (fileReader && fileList && fileList.length) {
            $scope.fileSize = fileList[0].size;
            fileReader.readAsDataURL(fileList[0]);

            var ext = fileList1.value.match(/\.([^\.]+)$/)[1].toLowerCase();
            switch (ext) {
                case 'jpg':
                case 'bmp':
                case 'png':
                case 'tif':
                case 'jpeg':
                    $scope.hasInvalidFiles = false;
                    fileReader.onload = function (event) {

                        var imageData = event.target.result;
                        console.log(imageData);
                    }

                    if (fileList[0].size < 2000) {
                             console.log("success");
                    }
                    else {
                        console.log("Failure");
                    }
                    break;
                default:
                   console.log("Invalid");
            }
        }

}

【问题讨论】:

标签: jquery html image jquery-file-upload


【解决方案1】:

function uploadImage(event) {
  var file = event.target.files[0]
  var fileReader = new FileReader();
  fileReader.readAsDataURL(file);
  fileReader.onload = function(e) {
    console.log(e.target.result)
    var imgBase = e.target.result;
    if (imgBase.split(',')[0].indexOf('base64') >= 0) {
      var result = imgBase.split(',')[1]; // This is the actual size.
    }
  }
  if (file.size < 2 * 1024 * 1024) {
    alert("Success");
  } else {
    alert("Failure");
  }
}
&lt;input type="file" accept="image/png, image/jpeg" onchange="uploadImage(event)" /&gt;

如果您只想接受图像。您可以使用accpet 属性。另外,File对象中size值的单位是byte而不是kb。

【讨论】:

  • 我不担心条件语句。我只想知道选择文件后,为什么base64格式的大小大于实际大小。
  • @JustCode 需要截取base64前面的“data:image/png;base64”之类的内容。
  • 你明白我的问题了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
相关资源
最近更新 更多