在 Xamarin Forms 中使用 Exif 数据和理解 Android 路径系统时出现问题

Problem working with Exif Data in Xamarin Forms and understanding Android path system

我在 Xamarin Forms 中处理 exif 数据时遇到问题,我解释说:

  1. 我的app用MediaPlugin拍照,图片路径是 file.Path="/storage/emulated/0/Android/data/com.companyname.appname/files/Pictures/Sample/someName.jpg"
  2. 使用 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 数据