gpt4 book ai didi

Android ExifInterface 不保存属性

转载 作者:太空狗 更新时间:2023-10-29 16:30:08 37 4
gpt4 key购买 nike

下面是我的代码-

try {
InputStream inputStream = getAssets().open("thumbnail.jpg");
exifInterface = new ExifInterface(inputStream);
exifInterface.setAttribute(ExifInterface.TAG_ARTIST,"TEST INPUT");
exifInterface.saveAttributes();
} catch (IOException e) {
e.printStackTrace();
}

exifInterface.saveAttributes() 行我得到以下错误 -

java.io.IOException: ExifInterface does not support saving attributes for the current input.

我不确定错误是由于图像文件还是由于属性造成的。我正在努力挽救。我也在网上寻找可能的解决方案(例如 Sanselan),但不确定它是否能解决这个问题。

有人可以解释一下如何解决这个问题吗?

谢谢!

最佳答案

您不能使用输入流进行属性突变

你可以查看ExifInterface的代码,它说:

/**
* Reads Exif tags from the specified image input stream. Attribute mutation is not supported
* for input streams. The given input stream will proceed its current position. Developers
* should close the input stream after use. This constructor is not intended to be used with
* an input stream that performs any networking operations.
*/
public ExifInterface(InputStream inputStream) throws IOException {
/* Irrelevant code here */

因此,如果您想写入文件的元数据,则需要在构造函数中传递文件。否则它将失败。也可以在类中看到总是会失败的代码(用InputStream):

public void saveAttributes() throws IOException {
if (!mIsSupportedFile || mMimeType != IMAGE_TYPE_JPEG) {
throw new IOException("ExifInterface only supports saving attributes on JPEG formats.");
}
if (mFilename == null) {
throw new IOException(
"ExifInterface does not support saving attributes for the current input.");
}

//Irrelevant code

所以使用 ExifInterface(file) 并且您将能够使您的代码工作。

编码愉快!

关于Android ExifInterface 不保存属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41586663/

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