读写Exif标签和注释-控制台c#

本教程展示如何使用LEADTOOLS SDK在c# Windows控制台应用程序中读取和写入Exif标记和注释。

概述
总结 本教程介绍如何在c# Windows控制台应用程序中使用Exif标记和注释。
完成时间 30分钟
Visual Studio项目 下载教程项目(3kb)
平台 c# Windows控制台应用程序
IDE Visual Studio 2017, 2019
开发许可 下载LEADTOOLS
用另一种语言试试

所需的知识

步骤熟悉创建项目的基本步骤添加引用和设置License教程,在工作之前读写Exif标签和注释-控制台c#教程。

创建项目并添加LEADTOOLS引用

中创建的项目的副本开始添加引用和设置License教程。如果您没有该项目,请按照该教程中的步骤创建它。

所需要的参考资料取决于项目的目的。引用可以通过以下两种方法中的一种添加(但不能同时添加)。

如果使用NuGet引用,本教程需要以下NuGet包:

Leadtools.Formats.Raster.Common

如果使用本地DLL引用,则需要以下DLL。

dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64

有关应用程序需要哪些DLL文件的完整列表,请参阅在你的申请中包含的文件

设置License文件

许可证解锁项目所需的特性。它必须在调用任何工具箱函数之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License

有两种类型的运行时许可证:

请注意

中详细介绍了添加LEADTOOLS NuGet和本地引用以及设置许可添加引用和设置License教程。

添加读/写Exif注释代码

随着项目的创建、引用的添加和许可的设置,编码就可以开始了。

解决方案资源管理器,打开Program.cs.将以下语句添加到顶部的using块中Program.cs

c#
使用系统;使用System.Collections.Generic;使用先;使用Leadtools;使用Leadtools.Codecs;使用Leadtools.ImageProcessing;

属性中添加两个新的字符串变量主要方法命名_srcFile而且_destFile上面的调用SetLicense方法。集_srcFile等于包含源EXIF文件和set的文件路径_destFile等于文件路径,导出包含添加注释的EXIF文件。

控件中添加一个新方法程序类命名(string _srcFile, string _destFile, RasterCodecs _codecs).方法调用下面的此方法SetLicense方法,在使用的新实例RasterCodecs,如下图所示。

c#
静态无效主要(字符串[]参数)字符串_srcFile =@" exif源文件的路径"字符串_destFile =@"输出exif文件的路径"SetLicense ();使用(RasterCodecs _codecs =RasterCodecs ())ReadAndWriteExifComments(_srcFile, _destFile, _codecs);ReadAndWriteExifTags (_srcFile _codecs);控制台。WriteLine (“按任意键退出”);控制台。ReadKey (真正的);

将下面的代码添加到ReadAndWriteExifComments方法来翻转加载的图像,将标记写入文件,说明图像已被翻转,然后读取创建的用户注释。

c#
静态无效ReadAndWriteExifComments (字符串_srcFile,字符串_destFile, RasterCodecs _codecs使用(RasterImage _image = _codecs.Load(_srcFile))//写注释//翻转图像。FlipCommand flipCmd =FlipCommand (真正的);flipCmd.Run (_image);//添加一个用户注释到文件中,并以另一个名称保存。RasterCommentMetadata comment =RasterCommentMetadata ();//当写一个用户注释时,前8个字节必须包含“ASCII”字,后面跟着3个空字符。发表评论。类型= rastercommentmetadattype . usercomment;字符串commentString =“ASCII \ \ 0 \ 0”commentString + =“图像被翻转了。”//将字符串转换为字节数组,并将字节设置为注释字节[] bytes = System.Text.Encoding.ASCII.GetBytes(commentString);comment.FromByte(字节);//将用户注释添加到图像的注释集合中_image.Comments.Add(评论);_codecs.Options.Save。评论=真正的_codecs。保存(_image, _destFile, RasterImageFormat)。今年24岁的Exif);//阅读评论RasterCommentMetadata commentRead = _codecs。ReadComment(_destFile, 1, rastercommentmetadattype . usercomment);字节[] commentBytes = commentRead.GetData();字符串commentStringRead = System.Text.Encoding.ASCII。GetString(commentBytes, 8, commentBytes.)长度- 8);控制台。WriteLine ($"用户评论= {commentStringRead}");

添加读/写Exif标签代码

控件中添加一个新方法程序类命名ReadAndWriteExifTags(string _srcFile, RasterCodecs _codecs).方法调用下面的此方法ReadAndWriteExifComments方法,在使用的新实例RasterCodecs,如前一节所示。将下面的代码添加到ReadAndWriteExifTags方法写入私有标记,然后从指定文件中读取所有标记。

c#
静态无效ReadAndWriteExifTags (字符串_srcFile, RasterCodecs _codecs)RasterImageFormat格式;使用(CodecsImageInfo信息= _codecs。GetInformation (_srcFile))format = info.Format;//加载标签List tags =如果(! RasterCodecs.TagsSupported(格式)控制台。WriteLine (“文件格式不支持标签”);返回intPhoneNumber = 0x8001;//添加私有(自定义)“电话号码”标签字节[] bytes = System.Text.Encoding.ASCII.GetBytes(“+ 1-800-637-4699”);RasterTagMetadata标签=RasterTagMetadata (PhoneNumber RasterTagMetadataDataType。Ascii字节);_codecs。WriteTag(_srcFile, 1, tag);标签=列表< RasterTagMetadata > (_codecs。ReadTags (_srcFile,1));字符串txtFileName =“_metadata.txt”使用(StreamWriter writer = File.CreateText(txtFileName))//列出标签到一个文本文件ExportTags(作家,“标签”、标签);//显示我们创建的文本文件System.Diagnostics.Process.Start (txtFileName);

控件中添加一个新方法程序类命名ExportTags(StreamWriter写入器,字符串名称,列表标签).方法中调用此方法ReadAndWriteExifTags方法,如上所示。将下面的代码添加到ExportTags方法列出读到TXT文件的标签。

c#
静态无效ExportTags (StreamWriter作家,字符串name, List tags)作家。WriteLine ({0}:“、名称);如果(标签! =foreach(RasterTagMetadata标签标签)作家。WriteLine ("Id: 0x{0},数据长度:{1}"tag.Id.ToString (“X”)、tag.GetData () . length);其他的作家。WriteLine (“不支持”);writer.WriteLine ();

运行项目

按下运行项目F5,或选择Debug ->开始调试

如果正确地遵循了这些步骤,应用程序将运行,并首先编写Exif用户评论,读取编写的用户评论,然后读取给定图像中的Exif标记,并将这些标记写入外部TXT文件。

总结

本教程展示了如何读写Exif注释和标记。此外,我们还介绍了如何使用RasterCodecs而且RasterTagMetadata类。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2022领德科技有限公司版权所有。