Android 图片转二进制流与二进制转字符串示例
65 浏览量
更新于2024-09-04
收藏 50KB PDF 举报
在Android开发中,处理图像数据通常涉及到将图片转换成二进制流和二进制数据转换成字符串。本文主要介绍了两个关键函数:`readStream` 和 `byte2hex`,它们分别用于图片文件读取和二进制数据的十六进制表示。
首先,`readStream` 方法是图片文件到二进制流转换的核心。它通过以下步骤实现:
1. 使用 `FileInputStream` 从指定路径 `imagepath` 读取图片文件。
2. 创建一个 `ByteArrayOutputStream` 对象,用于存储读取到的二进制数据。
3. 定义一个固定大小的字节数组 `buffer`,这里设置为1024字节,用于一次读取一小部分数据。
4. 使用 `fs.read(buffer)` 循环读取文件,直到读取到文件末尾,每次读取的长度存储在变量 `len` 中。
5. 在循环中,将读取到的数据写入 `ByteArrayOutputStream`,确保数据顺序不丢失。
6. 关闭输入流 `fs` 和输出流 `outStream`,然后返回转换后的二进制数组。
这个方法可用于向服务器发送二进制图片数据,或者在内存中进行进一步处理,如压缩或加密。
接着,`byte2hex` 函数用于将字节数组转换为十六进制字符串。它遍历输入的 `byte[]`,对每个字节应用 `Integer.toHexString()` 函数获取其十六进制表示,添加前导0以保持2位长度。最后,将所有十六进制字符连接成一个字符串并返回。
在实际应用中,例如在上传图片时,可能需要先对原始Bitmap进行压缩,以便减小数据量。`compressBitmap` 方法通过创建一个 `Matrix` 对象,根据Bitmap的宽高比例进行缩放,将压缩后的新Bitmap保存为字节数组,然后可以与 `readStream` 结合使用,先压缩再转换为二进制流。例如:
```java
// 压缩Bitmap到3:1的大小
Bitmap compressedBitmap = compressBitmap(bitmap);
byte[] compressedData = readStream(compressedBitmap); // 使用之前定义的readStream方法
// 将压缩后的数据上传到服务器
sendToServer(compressedData);
```
总结来说,这篇文章提供了Android开发中常见的图片数据处理技术,包括文件读取、二进制数据转换以及图像压缩,这对于开发者在上传、存储和传输图片数据时非常实用。通过理解并运用这些方法,可以有效地管理应用程序中的图像资源。
2019-08-13 上传
2014-09-25 上传
416 浏览量
2021-01-20 上传
点击了解资源详情
2024-09-14 上传
2023-12-02 上传
2023-06-09 上传
weixin_38743968
- 粉丝: 404
- 资源: 2万+
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程