Java 在android中使用毕加索从图像读取EXIF数据
我有以下代码从URL下载图像并在imageView中显示:Java 在android中使用毕加索从图像读取EXIF数据,java,android,picasso,android-image,exif,Java,Android,Picasso,Android Image,Exif,我有以下代码从URL下载图像并在imageView中显示: Picasso.with(getActivity()) .load(mImagesUrls[mPosition]) .resize(500, 500) .centerCrop() .into(mSlideImage); 但除了显示图像,我还需要检索一些EXIF数据。通过谷歌搜索如何为android实现这一点,我找到了“ExiFinInterface”类,但
Picasso.with(getActivity())
.load(mImagesUrls[mPosition])
.resize(500, 500)
.centerCrop()
.into(mSlideImage);
但除了显示图像,我还需要检索一些EXIF数据。通过谷歌搜索如何为android实现这一点,我找到了“ExiFinInterface”类,但其构造函数如下所示:
- 从指定的图像文件读取Exif标记
- 从指定的图像文件描述符读取Exif标记
- 从指定的图像输入流读取Exif标记
如何获得这些构造函数所需的任何参数?我在毕加索身上所能找到的只是一种将图像加载为位图的方法,它似乎不支持EXIF数据。我不知道它是否有帮助,但我举了一个例子,在我的例子中,它是可行的,但它只是一个例子:
public void transformPicture(final File file, final OnImageReady onImageReady) {
float rotation = 0;
try {
Uri uri = Uri.fromFile(file);
ExifInterface exifInterface = new ExifInterface(uri.getPath());
int orientation = exifInterface.getAttributeInt(TAG_ORIENTATION, ORIENTATION_NORMAL);
switch (orientation){
case ExifInterface.ORIENTATION_ROTATE_90: {
rotation = -90f;
break;
}
case ExifInterface.ORIENTATION_ROTATE_180: {
rotation = -180f;
break;
}
case ExifInterface.ORIENTATION_ROTATE_270: {
rotation = 90f;
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
Picasso.get().load(file)
.resize(getTargetMaxSize(), getTargetMaxSize())
.centerInside()
.rotate(rotation)
.into(myView);
}
请记住,您只能从文件中读取exif,而不能从网络中读取。
也可以看到
您可以通过以下方式获得ExiFinInterface:
String fileName = "/path/file.any";
ExifInterface exifInterface1 = new ExifInterface(fileName);
FileInputStream fis = new FileInputStream(new File(fileName));
ExifInterface exifInterface3 = new ExifInterface(fis);
我也有同样的问题,你有解决办法吗?遗憾的是,没有,我从来没有抽出时间来解决这个问题。这个项目被放弃了。