我有一个应用程序可以显示远程存储在 Twitter、Instagram 和 Flickr 服务器上的图像。我想要的是使用ExifLib提取 Exif 信息(主要是 GPS 数据)并显示它们以获取图像细节。
这是我到目前为止所拥有的:
string metaData = string.Empty;
string tagValue = string.Empty;
try
{
using (var wc = new WebClient())
{
byte[] imageBytes = wc.DownloadData(imgUrl);
using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
{
using (ExifReader reader = new ExifReader(ms))
{
if (reader.GetTagValue<string>(ExifTags.GPSAltitude, out tagValue))
Log.Debug("GPSAltitude: " + tagValue);
if (reader.GetTagValue<string>(ExifTags.DateTimeDigitized, out tagValue))
Log.Debug("DateTimeDigitized: " + tagValue);
if (reader.GetTagValue<string>(ExifTags.DateTimeOriginal, out tagValue))
Log.Debug("DateTimeOriginal: " + tagValue);
if (reader.GetTagValue<string>(ExifTags.GPSLatitude, out tagValue))
Log.Debug("GPSLatitude: " + tagValue);
if (reader.GetTagValue<string>(ExifTags.GPSLongitude, out tagValue))
Log.Debug("GPSLongitude: " + tagValue);
}
}
}
}
catch (Exception ex)
{
Log.Exception("A problem occurred while fetching Exif data.", ex);
}
但是对于每个经过的imageUrl似乎都无法通过使用图像的 MemoryStream实例化ExifReader ;它总是遇到异常并指示 ExifLib 找不到 Exif 数据,即使我从 Flickr中挑选了一张明显有 Exif 数据的图像。
我在上面的代码中做错了什么还是 ExifLib 不能在远程图像上工作?