gpt4 book ai didi

java - 如何在Android中使用函数 "getAttribute"从带有exif的图像中提取字节数组?

转载 作者:行者123 更新时间:2023-12-02 10:48:12 27 4
gpt4 key购买 nike

我是JAVA编程的新手。

我想使用 android.media.ExifInterface 来保存和恢复一些字节数组作为 exif 信息。

  String str = new String(byteArray);//save
exif.setAttribute(ExifInterface.TAG_MAKER_NOTE, str);
exif.saveAttributes();

String str =exif.getAttribute(ExifInterface.TAG_MAKER_NOTE);//restore
if(str != null)
{
byte[] byteArray = str.getBytes();
}

首先,我使用String(byte[])byte[]转换为字符串。然后我使用函数 setAttribute(String tag, String value) 来保存带有标签 TAG_MAKER_NOTE 的字符串。当我想提取byteArray时,我会使用getAttribute(String tag)来获取相应的字符串。

但是我发现如果保存的字节数组如下,函数getAttribute(String tag)无法正常工作:

 byte[] byteArray = new byte[]{ 1,2,3,4,0,0,5,6};

返回的字符串仅包含{1,2,3,4}。 0之后的数据就丢失了。字符串的长度是4,而保存的字符串是正常的。也许字符串将0视为结束?

我想知道是否有任何解决方案可以提取整个字节数组?没有第三个库就更好了。

最佳答案

不要使用new String(byteArray)来转换为字符串,而是使用base64编码的字符串。代码如下所示:

byte[] byteArray = new byte[]{1, 2, 3, 4, 0, 0, 5, 6};
String str = Base64.getEncoder().encodeToString(byteArray);
System.out.println(str);
byte[] result = Base64.getDecoder().decode(str);
System.out.println(Arrays.toString(result));

关于java - 如何在Android中使用函数 "getAttribute"从带有exif的图像中提取字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52381982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com