将图片转成二进制并生成Base64编码,在网页中可以通过url查看图片

本文介绍了一种使用Java进行文件读取并将其转换为Base64编码的方法。通过具体的代码示例,展示了如何获取文件的绝对路径、读取文件内容,并最终将文件内容编码成Base64字符串。

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

 String root=SystemConfig.getValue("file.root");// 文件根路径
JSONObject obj = new JSONObject();
String path = root + "/" + url;// 文件路径
File file = new File(path);
FileInputStream in = new FileInputStream(file);
byte[] bytes = new byte[in.available()];
in.read(bytes);
url = url.substring(url.lastIndexOf("/")+1);// 截取文件名
obj.put("name", url);
String base64 = (new BASE64Encoder()).encodeBuffer(bytes).toString();
obj.put("content", base64);// 编码后内容

 

### 将二进制图片数据转换为 Base64 编码的 JavaScript 实现 在现代浏览器环境中,可以利用 `FileReader` 对象将二进制图片数据读取转换为 Base64 编码。以下是详细的实现方法: #### 使用 FileReader 进行转换 通过创建一个 `FileReader` 实例,调用其 `readAsDataURL` 方法可轻松完成这一任务。此方法会异步处理文件或 Blob 数据,返回一个包含 Base64 编码的 Data URL。 ```javascript function binaryToBase64(binaryData) { const reader = new FileReader(); // 定义回调函数,在加载完成后获取结果 reader.onloadend = function () { const base64String = reader.result.split(',')[1]; // 去除前缀部分 (data:image/png;base64,) console.log('Base64 String:', base64String); }; // 设置要读取的数据源 reader.readAsDataURL(new Blob([binaryData])); } // 示例:假设我们有一个 Uint8Array 类型的二进制数据 const binaryImageData = new Uint8Array([ 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1F, 0x15, 0xC4, 0x89, 0x00, 0x00, 0x00, 0x0A, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, 0x63, 0xF8, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0x05, 0xFE, 0x02, 0xE5, 0xCB, 0x33, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 ]); binaryToBase64(binaryImageData.buffer); // 转换为 Base64 字符串 ``` 上述代码展示了如何将二进制数组缓冲区 (`Uint8Array`) 转换为 Base64 编码字符串[^1]。 --- #### 手动实现 Base64 编码 如果无法使用 `FileReader` 或者希望手动控制整个过程,则可以通过以下方式实现 Base64 编码逻辑: ```javascript function toBase64(arrayBuffer) { const uint8Array = new Uint8Array(arrayBuffer); let str = ''; for (let i = 0; i < uint8Array.length; ++i) { str += String.fromCharCode(uint8Array[i]); } return btoa(str); // 利用内置的 btoa 函数进行编码 } // 测试 toBase64(binaryImageData.buffer).then(base64 => { console.log('Manually Encoded Base64:', base64); }); ``` 这里的关键在于将二进制数据逐字节转化为字符形式后再传递给 `btoa` 函数[^2]。 --- #### 注意事项 - 如果输入的是纯二进制流而非标准格式(如 PNG),则需要额外指定 MIME 类型以便生成完整的 Data URL。 - 部分旧版浏览器可能不支持某些特性,请确保目标环境兼容所选方案[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值