1

如何从 Image 中读取 Exif 数据。有 ExifLib,但 Lumia 设备和数据采集字段有问题。有没有其他方法可以在 Windows Phone (7./8) 上读取 Exif 数据。

此致

4

2 回答 2

1

我使用本文http://igrali.com/2011/11/01/reading-and-displaying-exif-photo-data-on-windows-phone/中的 ExifLib在 Lumia 800 和 710 上没有任何问题。试试看. 如果您想获取照片的位置,请确保您已在设置中启用将 gps 信息添加到照片。

于 2012-12-05T15:15:00.003 回答
1

您应该为此使用 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();  
于 2012-12-06T01:32:50.917 回答