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をインスタンス化することはできません。Flickrから明らかに Exif データを含む画像を選択した場合でも、常に例外が発生し、ExifLib が Exif データを見つけることができなかったことを示します。
上記のコードで何か間違ったことをしているのですか、それとも ExifLib はリモート イメージで動作しませんか?