[SerializableAttribute ()]
公共类RasterMarkerMetadata:RasterMetadata
< SerializableAttribute () >
公共类RasterMarkerMetadata
继承了RasterMetadata
@接口LTRasterMarkerMetadata: LTRasterMetadata
公共类RasterMarkerMetadata扩展RasterMetadata实现了可序列化的
[SerializableAttribute ()]
公共ref类RasterMarkerMetadata:公共RasterMetadata
JPEG文件包含用户自定义标记中的元数据信息。
用户自定义标记的范围为0xE0到0xFE。这些标记的最大大小可以是0xFFFD,或者65533字节。
在0xE0下面的标记是为图像编码保留的,插入保留标记会使文件无效。因此,除非您非常熟悉JPEG文件中的标记和图像编码,否则不应该使用保留标记。
TIFF文件不包含标记,但是,LEADTOOLS提供了将Exif注释从JPEG文件传输到TIFF文件的“变通方法”,反之亦然。TIFF文件中的Exif元数据信息将作为APP1标记加载。因此,可以从未压缩的文件加载Exif元数据,并将其存储在压缩的Exif文件中。
还可以从压缩的Exif文件中获取元数据信息,并将其存储在未压缩的Exif文件中。但是请注意,有些信息不能存储在未压缩的Exif文件中。例如,音频数据存储在APP2标记中,并且没有内置支持将APP2标记保存在TIFF文件中。但是,您仍然可以使用自定义标记保存音频数据。
本例将向现有TIF文件写入不同的标记,然后将它们作为测试读取。
使用Leadtools;
使用Leadtools.Codecs;
公共无效RasterMarkerMetadataExample ()
{
RasterCodecs codecs =新RasterCodecs ();
编解码器。ThrowExceptionsOnInvalidImages =真正的;
字符串srcFileName = Path.Combine(LEAD_VARS.ImagesDir,“Image1.cmp”);
字符串destFileName = Path.Combine(LEAD_VARS.ImagesDir,“Image1_markers.tif”);
//加载图像
RasterImage image = codecs.Load(srcFileName);
编解码器。保存(image, destFileName, RasterImageFormat.)ExifJpeg、24);
image.Dispose ();
//写入一个标记到文件
RasterMarkerMetadata markerWrite =新RasterMarkerMetadata ();
字节[] data =新字节[100];
为(intI = 0;i < data.Length;我+ +)
数据[i] = (字节)(i + 1);
markerWrite。Id = 0xE0;
markerWrite.SetData(数据);
控制台。WriteLine (“书写标记”);
编解码器。WriteMarker(destFileName, 1, marker);
//从文件中读取标记并检查我们的标记
IList
markers = codecs.ReadMarkers(destFileName); RasterMarkerMetadata markerRead =零;
为(intI = 0;我<标记。数&& markerRead ==零;我+ +)
{
如果(标记[我]。Id==markerWrite。Id)
markerRead =标记[i];
}
Assert.IsTrue (markerRead。Id == markerWrite.Id);
字节[] dataRead = markerRead.GetData();
字节[] dataWrite = markerWrite.GetData();
Assert.IsTrue (dataRead。长度==dataWrite.Length);
为(intI = 0;i < datread . length;我+ +)
断言。是真正的(dataRead[i] == dataWrite[i]);
codecs.Dispose ();
}
静态类LEAD_VARS
{
公共常量字符串ImagesDir =@“C: \ LEADTOOLS21 \ Resources \图片”;
}
进口Leadtools
进口Leadtools。编解码器
公共子RasterMarkerMetadataExample ()
昏暗的编解码器作为RasterCodecs =新RasterCodecs ()
编解码器。ThrowExceptionsOnInvalidImages =真正的
昏暗的srcFileName作为字符串= Path.Combine (LEAD_VARS.ImagesDir“Image1.cmp”)
昏暗的destFileName作为字符串= Path.Combine (LEAD_VARS.ImagesDir“Image1_markers.tif”)
载入图像
昏暗的图像作为RasterImage = codecs.Load(srcFileName)
编解码器。保存(image, destFileName, RasterImageFormat.)ExifJpeg, 24)
image.Dispose ()
向文件中写入标记
昏暗的markerWrite作为RasterMarkerMetadata =新RasterMarkerMetadata ()
昏暗的数据作为字节() =新字节(99) {}
昏暗的我作为整数= 0
做而I < data。长度
数据(我)=CByte(i + 1)
I += 1
循环
markerWrite。Id = &HE0
markerWrite.SetData(数据)
控制台。WriteLine (“书写标记”)
编解码器。WriteMarker(destFileName, 1, marker)
“从文件中读取标记,并检查我们的标记
昏暗的标记作为IList(Of RasterMarkerMetadata) = codecs.ReadMarkers(destFileName)
昏暗的markerRead作为RasterMarkerMetadata =没有什么
I = 0
做而我<标记。数需要说明markerRead是没有什么
如果标记(我)。Id=markerWrite。Id然后
markerRead =标记(i)
结束如果
I += 1
循环
Debug.Assert (markerRead。Id = markerWrite.Id)
昏暗的dataRead作为字节() = marker . getdata ()
昏暗的dataWrite作为字节() = kerwrite . getdata ()
Debug.Assert (dataRead。长度=dataWrite.Length)
I = 0
做而i < dataRead。长度
Debug.Assert(dataRead(i) = dataWrite(i))
I += 1
循环
结束子
公共NotInheritable类LEAD_VARS
公共常量ImagesDir作为字符串=“C: \ LEADTOOLS21 \ Resources \图片”
结束类
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。