📜  如何使用 JavaScript 将图像转换为 base64字符串?(1)

📅  最后修改于: 2023-12-03 15:08:20.401000             🧑  作者: Mango

如何使用 JavaScript 将图像转换为 base64 字符串?

在编程过程中,有时候需要将图像文件转换成 base64 字符串,以便于存储、传输和处理。在 JavaScript 中,可以通过一些简单的方法实现这个过程。

方法一:使用 FileReader 和 Canvas
<script>
    // 创建 FileReader 对象
    var reader = new FileReader();
    
    // 当读取文件时触发事件
    reader.onload = function(event) {
        // 创建图像元素
        var img = new Image();
        
        // 当图像加载完成时触发事件
        img.onload = function() {
            // 创建 Canvas 元素
            var canvas = document.createElement("canvas");
            
            // 设置 Canvas 尺寸
            canvas.width = img.width;
            canvas.height = img.height;
            
            // 在 Canvas 上绘制图像
            var ctx = canvas.getContext("2d");
            ctx.drawImage(img, 0, 0);
            
            // 获取图像的 base64 字符串
            var dataURL = canvas.toDataURL("image/png");
            
            // 输出 base64 字符串
            console.log(dataURL);
        };
        
        // 加载图像
        img.src = event.target.result;
    };
    
    // 读取文件
    reader.readAsDataURL(file);
</script>
方法二:使用 HTML5 新增的 File API
<script>
    // 创建 FileReader 对象
    var reader = new FileReader();
    
    // 当读取文件时触发事件
    reader.onload = function(event) {
        // 输出 base64 字符串
        console.log(event.target.result);
    };
    
    // 读取文件
    reader.readAsDataURL(file);
</script>
方法三:使用 XMLHttpRequest 和 Blob
<script>
    // 创建 XMLHttpRequest 对象
    var xhr = new XMLHttpRequest();
    
    // 当获取到响应时触发事件
    xhr.onload = function() {
        // 创建 Blob 对象
        var blob = new Blob([xhr.response], {type: "image/png"});
        
        // 创建 FileReader 对象
        var reader = new FileReader();
        
        // 当读取文件时触发事件
        reader.onload = function(event) {
            // 输出 base64 字符串
            console.log(event.target.result);
        };
        
        // 读取文件
        reader.readAsDataURL(blob);
    };
    
    // 发送请求
    xhr.open("GET", "image.png");
    xhr.responseType = "arraybuffer";
    xhr.send();
</script>

通过以上三种方法,我们都可以将图像文件转换成 base64 字符串。这些方法在实际开发中,可以根据具体情况选择使用。