本教程展示如何使用LEADTOOLS SDK在c# Windows控制台应用程序中读取和写入Exif标记和注释。
| 概述 | |
|---|---|
| 总结 | 本教程介绍如何在c# Windows控制台应用程序中使用Exif标记和注释。 |
| 完成时间 | 30分钟 |
| Visual Studio项目 | 下载教程项目(3kb) |
| 平台 | c# Windows控制台应用程序 |
| IDE | Visual Studio 2017, 2019 |
| 开发许可 | 下载LEADTOOLS |
| 用另一种语言试试 |
|
步骤熟悉创建项目的基本步骤添加引用和设置License教程,在工作之前读写Exif标签和注释-控制台c#教程。
中创建的项目的副本开始添加引用和设置License教程。如果您没有该项目,请按照该教程中的步骤创建它。
所需要的参考资料取决于项目的目的。引用可以通过以下两种方法中的一种添加(但不能同时添加)。
如果使用NuGet引用,本教程需要以下NuGet包:
Leadtools.Formats.Raster.Common
如果使用本地DLL引用,则需要以下DLL。
dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64:
Leadtools.dllLeadtools.Codecs.dllLeadtools.Codecs.Cmp.dllLeadtools.Codecs.Tif.dll有关应用程序需要哪些DLL文件的完整列表,请参阅在你的申请中包含的文件.
许可证解锁项目所需的特性。它必须在调用任何工具箱函数之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License.
有两种类型的运行时许可证:
请注意
中详细介绍了添加LEADTOOLS NuGet和本地引用以及设置许可添加引用和设置License教程。
随着项目的创建、引用的添加和许可的设置,编码就可以开始了。
在解决方案资源管理器,打开Program.cs.将以下语句添加到顶部的using块中Program.cs:
使用系统;使用System.Collections.Generic;使用先;使用Leadtools;使用Leadtools.Codecs;使用Leadtools.ImageProcessing;
属性中添加两个新的字符串变量主要方法命名_srcFile而且_destFile上面的调用SetLicense方法。集_srcFile等于包含源EXIF文件和set的文件路径_destFile等于文件路径,导出包含添加注释的EXIF文件。
控件中添加一个新方法程序类命名(string _srcFile, string _destFile, RasterCodecs _codecs).方法调用下面的此方法SetLicense方法,在使用的新实例RasterCodecs,如下图所示。
静态无效主要(字符串[]参数){字符串_srcFile =@" exif源文件的路径";字符串_destFile =@"输出exif文件的路径";SetLicense ();使用(RasterCodecs _codecs =新RasterCodecs ()){ReadAndWriteExifComments(_srcFile, _destFile, _codecs);ReadAndWriteExifTags (_srcFile _codecs);}控制台。WriteLine (“按任意键退出”);控制台。ReadKey (真正的);}
将下面的代码添加到ReadAndWriteExifComments方法来翻转加载的图像,将标记写入文件,说明图像已被翻转,然后读取创建的用户注释。
静态无效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}");}}
控件中添加一个新方法程序类命名ReadAndWriteExifTags(string _srcFile, RasterCodecs _codecs).方法调用下面的此方法ReadAndWriteExifComments方法,在使用的新实例RasterCodecs,如前一节所示。将下面的代码添加到ReadAndWriteExifTags方法写入私有标记,然后从指定文件中读取所有标记。
静态无效ReadAndWriteExifTags (字符串_srcFile, RasterCodecs _codecs){RasterImageFormat格式;使用(CodecsImageInfo信息= _codecs。GetInformation (_srcFile假)){format = info.Format;}//加载标签Listtags =零; 如果(! 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文件的标签。
静态无效ExportTags (StreamWriter作家,字符串name, Listtags) {作家。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类。