设置base64图像的大小javascript-angularjs

设置base64图像的大小javascript-angularjs,angularjs,image,base64,Angularjs,Image,Base64,我看到了很多答案,但我没有找到一个好的解决方案: 我的$scope.file=/9j/4VeIRXhpZgAASUkqAAgAAAAL[…]中有一张图片 它的大小是5217984=5MB 但这幅图很大,我的angular应用程序/web服务不支持它 我该怎么办?怎么做 我正在尝试将这个5 MB的图像转换为500 KB的图像,但我没有得到它。有人能帮我吗 我不知道这是否可能,但我需要javascript中的一个函数来将5MB图像转换为500KB的图像,例如,我可以提升它 在我的应用程序中,当我把一

我看到了很多答案,但我没有找到一个好的解决方案:

我的$scope.file=/9j/4VeIRXhpZgAASUkqAAgAAAAL[…]中有一张图片 它的大小是5217984=5MB

但这幅图很大,我的angular应用程序/web服务不支持它

我该怎么办?怎么做

我正在尝试将这个5 MB的图像转换为500 KB的图像,但我没有得到它。有人能帮我吗

我不知道这是否可能,但我需要javascript中的一个函数来将5MB图像转换为500KB的图像,例如,我可以提升它


在我的应用程序中,当我把一个500 KB的fir图像放在一个示例中时,一切都是正确的

如果您有权访问编码的base64,只需使用此功能:

    var $scope.getData= function () {

        var reader = new FileReader();
        reader.onload = $('input[type=file]')[0].files;
        var img = new Image();
        img.src =(reader.onload[0].result);
            img.onload = function() {
                if(this.width > 640)
                {
                    //Get resized image
                    img= imageToDataUri(this, 640, 480);
                }
            }   
    };

    //Resize the image (in the example 640 x 480px)
    function imageToDataUri(img, width, height) {

        // create an off-screen canvas
        const canvas = document.createElement('canvas'),
        const ctx = canvas.getContext('2d');

        // set its dimension to target size
        canvas.width = width;
        canvas.height = height;

        // draw source image into the off-screen canvas:
        ctx.drawImage(img, 0, 0, width, height);

        // encode image to data-uri with base64 version of compressed image
        return canvas.toDataURL();
    }
$scope.getFileSize = function (base64encoded) {
    try {
        var encodedString = base64encoded.split(',')[1]
    } catch (errorMsg) {
        return false;
    }

    var decodedBase64 = atob(encodedString);

    return decodedBase64.length;
};

如果您有权访问编码的base64,只需使用此函数:

$scope.getFileSize = function (base64encoded) {
    try {
        var encodedString = base64encoded.split(',')[1]
    } catch (errorMsg) {
        return false;
    }

    var decodedBase64 = atob(encodedString);

    return decodedBase64.length;
};

可能是重复的我尝试了它,但我得到了以下错误:
错误:CanvasRenderingContext2D.drawImage的参数1无法转换为以下任何参数:HtmlImage元素、HtmlCanvaElement、HTMLVideoElement、ImageBitmap。
在询问有关代码引起的问题时,如果您提供人们可以用来重现问题的代码,您将得到更好的答案。我尝试了它,但出现了以下错误:
错误:CanvasRenderingContext2D.drawImage的参数1无法转换为以下任何一种:HtmlImage元素、HtmlCanvaElement、HTMLVideoElement、,ImageBitmap.
当您询问由您的代码引起的问题时,如果您提供人们可以用来重现问题的代码,您将得到更好的答案。