Leadtools.Windows.Annotations Namespace > AnnCodecs Class : SaveToTag Method |
public byte[] SaveToTag( AnnContainer container, AnnCodecsTagFormat format )
'Declaration Public Function SaveToTag( _ ByVal container As AnnContainer, _ ByVal format As AnnCodecsTagFormat _ ) As Byte()
'Usage Dim instance As AnnCodecs Dim container As AnnContainer Dim format As AnnCodecsTagFormat Dim value() As Byte value = instance.SaveToTag(container, format)
public byte[] SaveToTag( AnnContainer container, AnnCodecsTagFormat format )
public: array<byte>^ SaveToTag( AnnContainer^ container, AnnCodecsTagFormat format )
This method will return byte array that can be saved to Tiff file using System.Windows.Media.Imaging.BitmapMetadata.SetQuery(System.String,System.Object) method passing the query '/ifd/{uint=32932}'.
This method can return null (Nothing in Visual Basic) if you try to save unsupported objects to certain formats (for example, if you try to save an AnnRubberStampObject to a Wang format).
For more information, refer to WPF Annotation Files.
Public Sub AnnCodecs_SaveToTag(ByVal viewer As ImageViewer, ByVal tifFileName As String) ' first create a container and add a few objects Dim container As AnnContainer = New AnnContainer() container.Width = 400 container.Height = 400 Dim lineObj As AnnLineObject = New AnnLineObject() lineObj.Start = New Point(100, 100) lineObj.End = New Point(200, 200) lineObj.Stroke = Colors.Red lineObj.StrokeThickness = 1.0 container.Children.Add(lineObj) Dim rectObj As AnnRectangleObject = New AnnRectangleObject() rectObj.Rect = New Rect(100, 100, 200, 200) rectObj.Stroke = Colors.Red rectObj.StrokeThickness = 1.0 rectObj.Fill = Colors.White container.Children.Add(rectObj) ' create a new instance of the AnnCodecs object Dim ann As AnnCodecs = New AnnCodecs() ' save this container as a TIFF tag 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(DirectCast(viewer.Source, BitmapSource), Nothing, bmd, Nothing) Dim tiffEncoder As TiffBitmapEncoder = New TiffBitmapEncoder() tiffEncoder.Frames.Add(bf1) tiffEncoder.Save(fs1) fs1.Close() End If ' clear the container and the tag container.Children.Clear() tagData = Nothing ' re-load the tag 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 ' load the container ann.LoadFromTag(tagData, container) End Sub
public void AnnCodecs_SaveToTag(ImageViewer 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.Start = new Point(100, 100); lineObj.End = new Point(200, 200); lineObj.Stroke = Colors.Red; lineObj.StrokeThickness = 1.0; container.Children.Add(lineObj); AnnRectangleObject rectObj = new AnnRectangleObject(); rectObj.Rect = new Rect(100, 100, 200,200); rectObj.Stroke = Colors.Red; rectObj.Fill = Colors.White; rectObj.StrokeThickness = 1.0; 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 as BitmapSource, 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); }
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2