如何从 Image 中读取 Exif 数据。有 ExifLib,但 Lumia 设备和数据采集字段有问题。有没有其他方法可以在 Windows Phone (7./8) 上读取 Exif 数据。
此致
如何从 Image 中读取 Exif 数据。有 ExifLib,但 Lumia 设备和数据采集字段有问题。有没有其他方法可以在 Windows Phone (7./8) 上读取 Exif 数据。
此致
我使用本文http://igrali.com/2011/11/01/reading-and-displaying-exif-photo-data-on-windows-phone/中的 ExifLib在 Lumia 800 和 710 上没有任何问题。试试看. 如果您想获取照片的位置,请确保您已在设置中启用将 gps 信息添加到照片。
您应该为此使用 ExifLib。不幸的是,它需要更多的工作,因为它不是 100% 适应 WP。
1) 下载ExifLib ZIP 文件,解压缩,解除对 DLL 的阻止(右键单击 --> 属性 --> 解除阻止)并从您的项目中添加对它的引用。同时,我在我的服务器上托管了 ZIP @ http://JustinAngel.net/Storage/ExifLib.zip
2) 接下来,您必须创建一个可从 windows phone 使用的入口函数。这是我使用的一个:
public class ExifReaderEx : ExifReader
{
protected ExifReaderEx(Stream stream)
: base(stream)
{
}
public static JpegInfo ReadJpeg(Picture picture)
{
Stream FileStream = null;
try
{
FileStream = picture.GetImage();
}
catch
{
return null;
}
DateTime now = DateTime.Now;
ExifReaderEx reader = new ExifReaderEx(FileStream);
reader.info.FileSize = (int)FileStream.Length;
reader.info.FileName = string.Format("{0}.jpg", "fileName");
reader.info.LoadTime = (TimeSpan)(DateTime.Now - now);
return reader.info;
}
}
3) 通过调用来调用代码ExifReaderEx.ReadJpeg(myPicture)
。例如,以下代码片段将返回包含所有元数据的 Exif 项目列表:
var items =
new MediaLibrary().Pictures
.Select(picture => ExifReaderEx.ReadJpeg(picture))
.Where(exif => exif != null)
.ToList();