Load-image.js base64映像的大小是filereader base64映像的10倍?

Load-image.js base64映像的大小是filereader base64映像的10倍?,base64,Base64,当你使用iPhone时,我会使用load-image.js获得方向正确的base64。它可以工作,它将图像转换为base64,但是如果我上传一个70k的图像,那么当它是base64图像时,它将是701k 如果我只使用fileReader,那么它作为映像是70k,作为base64是70k 那么,如何使用load-image.js使其变得更小、更轻呢 这就是我现在使用load-image.js的方式 var file=''; file = document.getElementById('file-

当你使用iPhone时,我会使用load-image.js获得方向正确的base64。它可以工作,它将图像转换为base64,但是如果我上传一个70k的图像,那么当它是base64图像时,它将是701k

如果我只使用fileReader,那么它作为映像是70k,作为base64是70k

那么,如何使用load-image.js使其变得更小、更轻呢

这就是我现在使用load-image.js的方式

var file='';
file = document.getElementById('file-input').files[0],
        options = {
            canvas: true,
            maxWidth: 600,
        };

    if (!file) {
        return;
    }

    // Use the "JavaScript Load Image" functionality to parse the file data
    loadImage.parseMetaData(file, function(data) {
        // Get the correct orientation setting from the EXIF Data
        if (data.exif) {
            options.orientation = data.exif.get('Orientation');
        }
        // Load the image from disk and inject it into the DOM with the correct orientation
        loadImage(
            file,
            function(canvas) {
                var imgDataURL = canvas.toDataURL();
所以我使用的是imgdataul中的base64,它的文件大小变得更大了!我使用load-image.all.min.js文件

我所要做的就是将一个图像转换为base64,并且当我在iPhone上进行转换时,它从一开始就具有正确的方向

非常感谢您的任何意见,谢谢

编辑: 我刚刚意识到上传的图像是一个.jpg文件,当使用filereader上传时,它在base64中仍然是一个.jpg文件,但load image将其更改为.png图像。我想这就是问题所在。那么,我怎样才能通过加载图像将其添加到.jpg中呢?

一旦base64'ed,任何东西都会变大大约33%

因此,除非在传输过程中丢失了某些内容,或者您在接收和base64解码后正在检查图像,否则70K图像不能是70K base64流。每3个字节变成4个base64字符,因此70K必须至少变成93K

现在-什么可以使图像变大10倍?load-image.js具有缩放功能。您确定您发送的图像在到达时与离开时的大小相同(以像素为单位)?或者可能与画布分辨率有关:

aspectRatio: 将图像裁剪到给定的纵横比(例如16/9)。 设置aspectRatio也会启用裁剪选项

像素比率: 定义画布像素与屏幕上物理图像像素的比率 屏幕。应设置为window.devicePixelRatio,除非 图像不会在屏幕上渲染。默认值为1,需要画布: 对

更新:要以给定格式和质量发送图像,请明确指定它们:

    var imgDataURL = canvas.toDataURL('image/jpeg', 1.0);

默认设置可能依赖于浏览器。我正在Firefox中成功上传JPEG文件。除非您在某处设置了一些覆盖…?

谢谢。我刚刚意识到上传的图像是一个.jpg文件,当使用filereader上传时,它在base64中仍然是一个.jpg文件,但load image将其更改为.png图像。我想这就是问题所在。那么,如何使用load image将其添加到.jpg中呢?这是通过
toDataURL()
两个参数完成的—类型和质量。您需要
toDataURL('image/jpeg',1.0)
;谢谢:-)我将其设置为0.75,得到的图像为66k。很好!