js读取远程图片成为base64

本文介绍了一种将跨域图片转换为Base64字符串的方法。通过使用JavaScript创建图片对象并设置crossOrigin属性,确保图片可以被Canvas读取。完成加载后,利用Canvas将图片绘制出来,并获取其Base64格式的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//前提是图片支持跨域访问。
getContentTxt = () =>{
    //新建图片
    let image = new Image();
    image.src = 'http://c2.xinstatic.com/f1/20170413/1559/58ef2fe4601f1835091.png';
    //解决canvas无法读取画布问题 
    image.setAttribute('crossOrigin', 'anonymous');
    //通加载图片完毕保证快速读取
    image.onload = () => {
        var base64 = this.getBase64Image(image);
        console.log(base64);
    }
    var content = this.aa.$txt.formatText();
    console.log(content);
}
 getBase64Image = (img) =>{
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    console.log(img)
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0, img.width, img.height);
    var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
    console.log(canvas)
    var dataURL = canvas.toDataURL("image/jpeg");
    return dataURL;
}


                
### JavaScript 将本地图片文件转为 Base64 编码的方法 在现代浏览器中,可以使用 `FileReader` API 将本地图片文件转换为 Base64 编码。以下是一个完整的解决方案,包含 HTML 和 JavaScript 代码: #### HTML 部分 首先需要一个文件输入控件来选择本地图片文件: ```html <input type="file" id="image-input" accept="image/*"> ``` #### JavaScript 部分 通过监听文件输入控件的 `change` 事件,可以获取用户选择的图片文件,并使用 `FileReader` 将其转换为 Base64 编码: ```javascript $(document).ready(function() { $('#image-input').on('change', function() { var file = this.files[0]; // 获取用户选择的文件 if (file) { var reader = new FileReader(); // 创建一个 FileReader 实例 reader.onload = function(e) { var base64Image = e.target.result; // 获取 Base64 编码结果 console.log("Base64编码的图片: " + base64Image); // 输出到控制台 // 可以将 Base64 编码的图片显示在页面上或其他处理 }; reader.readAsDataURL(file); // 将文件读取为 Data URL } else { console.log("未选择任何文件"); } }); }); ``` 上述代码展示了如何通过 jQuery 监听文件输入控件的变化,并使用 `FileReader` API 将选中的图片文件转换为 Base64 编码[^1]。 #### Base64 编码的组成 Base64 是一种常见的二进制数据编码方式,它将任意二进制数据转换为只包含 ASCII 字符集(64 个字符)的文本字符串。图片Base64 编码则是将图片文件(如 PNG、JPEG 等格式)的二进制数据经过此编码过程,生成一段可嵌入文本中的字符串[^2]。 #### Data URL 的结构 Data URLs 由四个部分组成:前缀 (`data:`)、指示数据类型的 MIME 类型、如果非文本则为可选的 `base64` 标记、数据本身。例如,一个图片的 Data URL 可能如下所示: ``` data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA... ``` 这是图片转为 Base64 编码后的典型形式[^3]。 #### 异步获取远程图片并转为 Base64 如果需要将远程图片转为 Base64 编码,可以通过 AJAX 请求获取图片的二进制数据,然后使用 `FileReader` 进行转换。以下是一个示例: ```javascript methods: { async getBase64(url) { const response = await axios.get(url, { responseType: 'blob' }); // 获取图片的 Blob 数据 return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onloadend = () => resolve(reader.result); // 转换完成后返回 Base64 编码 reader.onerror = reject; reader.readAsDataURL(response.data); // 将 Blob 数据读取为 Data URL }); }, async someMethod() { const base64 = await this.getBase64('图片链接'); // 替换为实际的图片 URL console.log(base64); // 输出 Base64 编码 } } ``` 这段代码展示了如何通过 AJAX 请求获取远程图片,并将其转换为 Base64 编码[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值