您可以通过编程方式添加、编辑、删除或提取以元数据形式存储的图像详细信息,例如高度、宽度、品牌、型号等。作为 C# 开发人员,您可以轻松地在云端以编程方式提取和操作图像的元数据信息。在本文中,您将学习如何在 C# 中使用 REST API 提取和操作图像的元数据。
本文讨论/涵盖以下主题:
- 文档元数据操作 REST API 和 .NET SDK
- 使用 REST API 将元数据添加到图像
- 使用 REST API 更新图像的元数据
- 使用 REST API 从图像中删除元数据
- 使用 REST API 从图像中提取元数据
文档元数据操作 REST API 和 .NET SDK
为了处理 JPEG 图像的元数据,我将使用 GroupDocs.Metadata Cloud 的 .NET SDK API。它允许您从文档和图像文件格式中添加、编辑、检索和删除元数据属性。您只需定义搜索条件,元数据 Cloud REST API 将负责 支持的文件格式 中指定的元数据操作。它还为 Cloud API 提供 Java SDK 作为其文档元数据操作家族成员。
您可以从 NuGet 包管理器或在包管理器控制台中使用以下命令将 GroupDocs.Metadata 安装到您的 Visual Studio 项目:
Install-Package GroupDocs.Metadata-Cloud
在开始执行步骤和可用代码示例之前,请从 仪表板 获取您的客户端 ID 和客户端密码。获得客户端 ID 和密码后,添加如下所示的代码:
string clientID = "112f0f38-9dae-42d5-b4fc-cc84ae644972";
string clientSecret = "16ad3fe0bdc39c910f57d2fd48a5d618";
string myStorage = "";
Configuration configuration = new Configuration(clientID, clientSecret);
configuration.ApiBaseUrl = "https://api.groupdocs.cloud";
在 C# 中使用 REST API 将元数据添加到图像
您可以按照下面给出的简单步骤将元数据添加到图像:
- 上传图片到云端
- 使用C#向图像添加元数据
- 下载更新后的图片
上传图片
首先,使用下面给出的代码示例将 JPEG 文件上传到云端:
// 接口初始化
FileApi fileApi = new FileApi(configuration);
string path = @"C:\Files";
var file = Directory.GetFiles(path, "input.jpg", SearchOption.AllDirectories).FirstOrDefault();
if (file.Length != 0)
{
var relativeFilePath = file.Replace(path, string.Empty).Trim(Path.DirectorySeparatorChar);
var fileStream = File.Open(file, FileMode.Open);
fileApi.UploadFile(new UploadFileRequest(relativeFilePath, fileStream, myStorage));
fileStream.Close();
}
因此,上传的 JPEG 图像文件将在云端仪表板的 文件部分 中可用。
使用 C# 将元数据添加到图像
您可以按照下面给出的步骤以编程方式将元数据添加到 JPEG 图像。
- 创建 MetadataApi 实例
- 在FileInfo模型中设置JPEG图片文件路径
- 定义添加选项
- 使用 AddProperty 模型为属性设置 Value 和 SearchCriteria
- 使用 AddOptions 创建 AddRequest
- 调用MetadataApi.Add()方法获取结果
以下代码示例展示了如何使用 REST API 将元数据添加到 JPEG 图像。
// 接口初始化
var apiInstance = new MetadataApi(configuration);
// 输入图像路径
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
FilePath = "input.jpg"
};
// 定义元数据添加选项
var options = new AddOptions
{
FileInfo = fileInfo,
Properties = new List<AddProperty>
{
new AddProperty
{
Value = "All rights reserved.",
Type = "String",
SearchCriteria = new SearchCriteria
{
TagOptions = new TagOptions
{
PossibleName = "Copyright"
}
},
}
}
};
// 添加请求
var request = new AddRequest(options);
var response = apiInstance.Add(request);
下载图像
上面的代码示例将更新后的 JPEG 文件保存在云端,可以使用以下代码示例下载:
// 接口初始化
var fileApi = new FileApi(configuration);
// 默认路径
var file = "metadata\\add_metadata\\input_jpg\\input.jpg";
// 下载请求
var downloadRequest = new DownloadFileRequest(file, myStorage);
Stream downloadResponse = fileApi.DownloadFile(downloadRequest);
using (var fileStream = File.Create("C:\\Files\\input.jpg"))
{
downloadResponse.Seek(0, SeekOrigin.Begin);
downloadResponse.CopyTo(fileStream);
}
使用 C# 更新图像的元数据
您可以按照下面给出的步骤以编程方式更新 JPEG 图像的元数据。
- 创建 MetadataApi 实例
- 在FileInfo模型中设置JPEG图片文件路径
- 定义设置选项
- 使用 SetProperty 模型为属性设置 NewValue 和 SearchCriteria
- 使用 SetOptions 创建 SetRequest
- 通过调用MetadataApi.Set()方法获取结果
以下代码示例展示了如何使用 REST API 设置 JPEG 图像的元数据。请按照前面提到的步骤上传和下载文件。
// 接口初始化
var apiInstance = new MetadataApi(configuration);
// 输入图像路径
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
FilePath = "input.jpg"
};
// 定义元数据集选项
var options = new SetOptions
{
FileInfo = fileInfo,
Properties = new List<SetProperty>
{
new SetProperty
{
NewValue = "Copyright 2021",
SearchCriteria = new SearchCriteria
{
TagOptions = new TagOptions
{
PossibleName = "Copyright"
}
},
Type = "String"
}
}
};
// 更新请求
var request = new SetRequest(options);
var response = apiInstance.Set(request);
使用 C# 从图像中删除元数据
您可以按照下面给出的步骤以编程方式从 JPEG 图像中删除元数据。
- 创建 MetadataApi 实例
- 在FileInfo模型中设置JPEG图片文件路径
- 定义删除选项
- 设置搜索条件
- 使用 RemoveOptions 创建 RemoveRequest
- 通过调用 MetadataApi.Remove() 方法获取结果
以下代码示例展示了如何使用 REST API 从 JPEG 图像中删除元数据。请按照前面提到的步骤上传和下载文件。
// 接口初始化
var apiInstance = new MetadataApi(configuration);
// 输入图像路径
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
FilePath = "input.jpg"
};
// 定义元数据删除选项
var options = new RemoveOptions
{
FileInfo = fileInfo,
SearchCriteria = new SearchCriteria
{
TagOptions = new TagOptions
{
PossibleName = "Copyright"
}
}
};
// 删除请求
var request = new RemoveRequest(options);
var response = apiInstance.Remove(request);
使用 C# 从图像中提取元数据
您可以按照下面给出的步骤以编程方式从 JPEG 图像中提取元数据。
- 创建 MetadataApi 实例
- 在FileInfo模型中设置JPEG图片文件路径
- 定义 ExtractOptions
- 使用 ExtractOptions 创建 ExtractRequest
- 通过调用 MetadataApi.Extract() 方法获取结果
以下代码示例展示了如何使用 REST API 从 JPEG 图像中提取元数据。请按照前面提到的步骤上传文件。
// 接口初始化
var apiInstance = new MetadataApi(configuration);
// 源文件
var fileInfo = new GroupDocs.Metadata.Cloud.Sdk.Model.FileInfo
{
FilePath = "input.jpg"
};
// 提取选项
var options = new ExtractOptions
{
FileInfo = fileInfo
};
// 提取请求
var request = new ExtractRequest(options);
var response = apiInstance.Extract(request);
// 提取的元数据
if (response.MetadataTree.InnerPackages != null)
{
var innerPackages = response.MetadataTree.InnerPackages;
for (int i = 0; i < innerPackages.Count; i++)
{
Console.WriteLine($"\nPackage: {innerPackages[i].PackageName}");
var packageProperties = innerPackages[i].PackageProperties;
for (int j = 0; j < packageProperties.Count; j++)
{
Console.WriteLine(packageProperties[j].Name + " : " + packageProperties[j].Value);
}
}
}
上面的代码示例将产生以下输出:
Package: FileFormat
FileFormat : 9
MimeType : image/jpeg
ByteOrder : 1
Width : 480
Height : 360
Package: Xmp
http://ns.microsoft.com/photo/1.0/ :
Package: Exif
Exif.GpsIfd :
Exif.ExifIfd :
Make : Canon
Model : Canon PowerShot S40
Orientation : System.Int32[]
XResolution : System.Double[]
YResolution : System.Double[]
ResolutionUnit : System.Int32[]
DateTime : 2003:12:14 12:01:44
YCbCrPositioning : System.Int32[]
ExifIfd : System.Int64[]
Exif.Thumbnail : System.Byte[]
在线试用
请尝试使用上述 API 开发的以下 JPEG 元数据操作免费在线工具。 https://products.groupdocs.app/metadata/jpeg
结论
在本文中,您了解了如何添加、编辑、删除和提取云中图像的元数据。本文还介绍了如何以编程方式将 JPEG 图像文件上传到云端并从云端下载。您可以使用 文档 了解有关 GroupDocs.Metadata Manipulation Cloud API 的更多信息。我们还提供了一个 API 参考 部分,让您可以直接通过浏览器可视化我们的 API 并与之交互。如有任何歧义,请随时在论坛上与我们联系。