【问题标题】:How to get exif data from base64 data url?如何从base64数据url获取exif数据?
【发布时间】:2018-10-03 02:00:53
【问题描述】:

我目前正在下载已作为 base 64 字符串存储在我的数据库中的图像。问题是我还需要获取图像 EXIF 数据以确定图像方向。我想知道他们是否是获取 EXIF 数据的一种方式。

以下是我的c#代码。

 busyMessage.Text = "Loading Tools";
 InvToolSync toolSync = new InvToolSync();
 toolData = await toolSync.GetTools(viewModel.CompanyData.company_id);
 foreach (Tool tool in toolData)
 {
    if (tool.archived == "True")
       continue;

    var lt = new ListTemplate(tool.id, tool.name, ImageSource.FromFile("default_image.png"));

    if (!string.IsNullOrEmpty(tool.photos))
        if (tool.photos.Length % 4 == 0)
            lt.SourceImage = ImageSource.FromStream(() => new MemoryStream(Convert.FromBase64String(tool.photos)));

    listDisplay.Add(lt);
 }

上面的代码加载了填充列表项所需的数据,如您所见,我可以使用此代码tool.photos 获取图像的数据 url。但我似乎无法弄清楚如何获取 EXIF 数据。他们是一个插件还是一些可以从 base64 字符串甚至字节数组中获取它的 c# 代码?

谢谢。

【问题讨论】:

  • 有一些 Exif nuget 包似乎应该符合要求,但我怀疑你会发现任何以 base64 形式执行的包,因此你可能必须转换为字节数组首先。

标签: c# xamarin xamarin.forms exif


【解决方案1】:

您可以使用Convert.FromBase64String 获取图像数据的byte[]

这样,您可以使用MetadataExtractor 访问图像中的所有元数据,而不仅仅是 Exif:

var directories = ImageMetadataReader.ReadMetadata(
    new MemoryStream(bytes));

foreach (var directory in directories)
foreach (var tag in directory.Tags)
    Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}");

该库可在此处通过 NuGet 获得:https://www.nuget.org/packages/MetadataExtractor/

(我从 2002 年开始维护这个项目。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2023-03-10
    • 1970-01-01
    • 2017-01-25
    相关资源
    最近更新 更多