java - 位图无法正确解码代表文件数据的 byteArray
问题描述
我有以下代码:
File file = new File(filepath);
byte[] fileData = new byte[(int) file.length()];
DataInputStream dis = null;
try {
dis = new DataInputStream(new FileInputStream(file));
dis.readFully(fileData);
dis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Bitmap bm = BitmapFactory.decodeByteArray(fileData,0, fileData.length);
我成功地用字节填充 fileData,虽然老实说我认为字节太少无法表示文件路径引用的 jpg 文件的内容。但即使我将它设置为具有更多字节,它们仍保留为 0,我猜它包含正确的字节。
但是一旦执行了最后一条指令, bm 就会保留为空。
我该怎么做才能从该数据中正确获取位图?
PD:我知道这样做会更合乎逻辑:
Bitmap bm = BitmapFactory.decodeFile(filePath);
但是,由于某种原因,它也返回 null,所以我采用这种不太直接的方法来尝试解决问题。
经过一番调查,我检查了这个问题是只有几个字节是被检索的,这样一来,bitmpa 最终为空是没有道理的,我该怎么做才能得到所有字节?
解决方案
推荐阅读
- kubernetes - 未找到 Terraform Kubernetes 提供程序
- docker - 尽管 --detach、--interactive、--tty 和提供命令,Docker 运行仍会立即退出
- python - 如何根据python pandas中的条件保留某些行
- python - 使用 f-strings 用逗号格式化 6 位数字,将其四舍五入为 1 位有效数字并避免使用科学记数法?
- python - 将 R 转换为 Python 用于微观市场结构零智能算法,无法让市场事件的生成正常工作
- performance - MonetDB 性能将新列添加到具有 thoun 列的现有表中
- batch-file - 如何重命名大量带有多个点的文件,并使它们成为带有文件扩展名的新后缀?
- android - 代号一 iOS 远程通知
- java - 无法理解 Java 8 中的以下 Lambda 方法
- java - 如何使用反应器获取 doFinally 或 doOnCancel 中的上下文?