Saves the annotation objects in a container as a TIFF tag data.
Syntax
Parameters
- container
- The AnnContainer containing the objects to be saved.
- format
- An AnnCodecsTagFormat value that specifies the format used when creating the tag data.
Return Value
A byte array that can be saved into a TIFF file using
SetQuery method.
Example
Visual Basic | Copy Code |
---|
Public Sub AnnCodecs_SaveToTag(ByVal viewer As BitmapSourceViewer, ByVal tifFileName As String)
Dim container As AnnContainer = New AnnContainer()
container.Width = 400
container.Height = 400
Dim lineObj As AnnLineObject = New AnnLineObject()
lineObj.X1 = 100
lineObj.Y1 = 100
lineObj.X2 = 200
lineObj.Y2 = 200
lineObj.Stroke = Brushes.Red
lineObj.StrokeThickness = 1.0
container.Children.Add(lineObj)
Dim rectObj As AnnRectangleObject = New AnnRectangleObject()
rectObj.Left = 100
rectObj.Top = 100
rectObj.Width = 200
rectObj.Height = 200
rectObj.Stroke = Brushes.Red
rectObj.StrokeThickness = 1.0
rectObj.Fill = Brushes.White
container.Children.Add(rectObj)
Dim ann As AnnCodecs = New AnnCodecs()
Dim tagData As Byte() = ann.SaveToTag(container, AnnCodecsTagFormat.Serialize)
If Not tagData Is Nothing Then
Dim fs1 As FileStream = New FileStream(tifFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)
Dim bmd As BitmapMetadata = New BitmapMetadata("tiff")
bmd.SetQuery("/ifd/{uint=32932}", tagData)
Dim bf1 As BitmapFrame = BitmapFrame.Create(viewer.Source, Nothing, bmd, Nothing)
Dim tiffEncoder As TiffBitmapEncoder = New TiffBitmapEncoder()
tiffEncoder.Frames.Add(bf1)
tiffEncoder.Save(fs1)
fs1.Close()
End If
container.Children.Clear()
tagData = Nothing
Dim fs As FileStream = New FileStream(tifFileName, FileMode.Open)
Dim bf As BitmapFrame = BitmapFrame.Create(fs)
Dim tiffInplace As InPlaceBitmapMetadataWriter = Nothing
Try
tiffInplace = bf.CreateInPlaceBitmapMetadataWriter()
Catch
Finally
If Not tiffInplace Is Nothing AndAlso tiffInplace.ContainsQuery("/ifd/{uint=32932}") Then
tagData = CType(tiffInplace.GetQuery("/ifd/{uint=32932}"), Byte())
End If
fs.Close()
End Try
ann.LoadFromTag(tagData, container)
End Sub |
C# | Copy Code |
---|
public void AnnCodecs_SaveToTag(BitmapSourceViewer viewer, string tifFileName) { // first create a container and add a few objects AnnContainer container = new AnnContainer(); container.Width = 400; container.Height = 400; AnnLineObject lineObj = new AnnLineObject(); lineObj.X1 = 100; lineObj.Y1 = 100; lineObj.X2 = 200; lineObj.Y2 = 200; lineObj.Stroke = Brushes.Red; lineObj.StrokeThickness = 1.0; container.Children.Add(lineObj); AnnRectangleObject rectObj = new AnnRectangleObject(); rectObj.Left = 100; rectObj.Top = 100; rectObj.Width = 200; rectObj.Height = 200; rectObj.Stroke = Brushes.Red; rectObj.StrokeThickness = 1.0; rectObj.Fill = Brushes.White; container.Children.Add(rectObj); // create a new instance of the AnnCodecs object AnnCodecs ann = new AnnCodecs(); // save this container as a TIFF tag byte[] tagData = ann.SaveToTag(container, AnnCodecsTagFormat.Serialize); if(tagData != null) { FileStream fs = new FileStream(tifFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); BitmapMetadata bmd = new BitmapMetadata("tiff"); bmd.SetQuery("/ifd/{uint=32932}", tagData); BitmapFrame bf = BitmapFrame.Create(viewer.Source, null, bmd, null); TiffBitmapEncoder tiffEncoder = new TiffBitmapEncoder(); tiffEncoder.Frames.Add(bf); tiffEncoder.Save(fs); fs.Close(); } // clear the container and the tag container.Children.Clear(); tagData = null; // re-load the tag { FileStream fs = new FileStream(tifFileName, FileMode.Open); BitmapFrame bf = BitmapFrame.Create(fs); InPlaceBitmapMetadataWriter tiffInplace = null; try { tiffInplace = bf.CreateInPlaceBitmapMetadataWriter(); } catch { } finally { if(tiffInplace != null && tiffInplace.ContainsQuery("/ifd/{uint=32932}")) { tagData = (byte[])tiffInplace.GetQuery("/ifd/{uint=32932}"); } fs.Close(); } } // load the container ann.LoadFromTag(tagData, container); } |
Remarks
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Vista, and Windows Server 2003 family
See Also