在 Xamarin Forms 中使用 Exif 数据和理解 Android 路径系统时出现问题
Problem working with Exif Data in Xamarin Forms and understanding Android path system
我在 Xamarin Forms 中处理 exif 数据时遇到问题,我解释说:
- 我的app用MediaPlugin拍照,图片路径是
file.Path=
"/storage/emulated/0/Android/data/com.companyname.appname/files/Pictures/Sample/someName.jpg"
使用 ExifInterface 将我的 exif 数据放在图像上(在同一路径上)
ExifInterface newExif = new ExifInterface(file.Path);
newExif.SetAttribute(ExifInterface.TagUserComment, "Hello photo!");
newExif.SaveAttributes();```
现在问题开始了,如果我在这条路径上使用 GetAttribute
,我可以看到我的 exif 数据,但是如果我从“\Phone\Pictures\Sample" 在我的 PC 上查看详细信息 没有显示我的任何 exif 数据(仅显示白平衡等相机数据)。
现在我看到/storage/emulated/0/Android/data/.....是资源的"master"路径,另一个是"virtual link" 但我现在不知道如何到达其他图像路径。
我该如何处理?如何在我的 PC 副本上查看图像中的 exif 数据?
希望我的解释清楚
最后我使用了这个解决方法:
我在 ExternalStorage 绝对路径中创建了一个新文件夹(即您可以在 Windows 文件资源管理器中看到的文件夹)
var directoryname = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, "MY_APP");
Directory.CreateDirectory(directoryname);
string jpgFilename = Path.Combine(directoryname, picName);
File.Copy(file.Path, jpgFilename, true);
ExifInterface newExif = new ExifInterface(jpgFilename);
newExif.SetAttribute(ExifInterface.TagUserComment, "Ketama126");
newExif.SaveAttributes();
这将创建一个名为"MY_APP"的新文件夹,并在其中复制从 CrossMedia 返回的图像,在这里您可以保存 exif 数据
我在 Xamarin Forms 中处理 exif 数据时遇到问题,我解释说:
- 我的app用MediaPlugin拍照,图片路径是
file.Path=
"/storage/emulated/0/Android/data/com.companyname.appname/files/Pictures/Sample/someName.jpg" 使用 ExifInterface 将我的 exif 数据放在图像上(在同一路径上)
ExifInterface newExif = new ExifInterface(file.Path); newExif.SetAttribute(ExifInterface.TagUserComment, "Hello photo!"); newExif.SaveAttributes();```
现在问题开始了,如果我在这条路径上使用 GetAttribute
,我可以看到我的 exif 数据,但是如果我从“\Phone\Pictures\Sample" 在我的 PC 上查看详细信息 没有显示我的任何 exif 数据(仅显示白平衡等相机数据)。
现在我看到/storage/emulated/0/Android/data/.....是资源的"master"路径,另一个是"virtual link" 但我现在不知道如何到达其他图像路径。
我该如何处理?如何在我的 PC 副本上查看图像中的 exif 数据?
希望我的解释清楚
最后我使用了这个解决方法:
我在 ExternalStorage 绝对路径中创建了一个新文件夹(即您可以在 Windows 文件资源管理器中看到的文件夹)
var directoryname = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, "MY_APP");
Directory.CreateDirectory(directoryname);
string jpgFilename = Path.Combine(directoryname, picName);
File.Copy(file.Path, jpgFilename, true);
ExifInterface newExif = new ExifInterface(jpgFilename);
newExif.SetAttribute(ExifInterface.TagUserComment, "Ketama126");
newExif.SaveAttributes();
这将创建一个名为"MY_APP"的新文件夹,并在其中复制从 CrossMedia 返回的图像,在这里您可以保存 exif 数据