IndexedGif.vb
C# VB
'''' This code is part of Document Solutions for Imaging demos.'' Copyright (c) MESCIUS inc. All rights reserved.''Imports System.IOImports System.DrawingImports System.Collections.GenericImports System.LinqImports System.NumericsImports GrapeCity.Documents.DrawingImports GrapeCity.Documents.TextImports GrapeCity.Documents.Imaging
'' This sample loads an existing GIF with true color frames'' (produced by the MakeGif sample) and converts its frames'' to indexed 8bpp images. It also adds a global palette to the'' resulting GIF (the palette is taken from the first frame).Public Class IndexedGif Function GenerateImageStream( ByVal targetMime As String, ByVal pixelSize As Size, ByVal dpi As Single, ByVal opaque As Boolean, Optional sampleParams As String() = Nothing) As Stream
If Not targetMime = MimeTypes.GIF Then Throw New Exception("This sample only supports GIF output format.") End If
Dim ms = New MemoryStream() '' Read frames from the source GIF, convert them to 8bpp And save in the target GIF Using gr = New GcGifReader(Path.Combine("Resources", "Gifs", "goldfish.gif")), gw = New GcGifWriter(ms) For i = 0 To gr.Frames.Count - 1 '' Add a global palette to the target GIF based on the first frame If i = 0 Then Using tbmp = gr.Frames(i).ToGcBitmap() gw.GlobalPalette = tbmp.GenerateOctreePalette(256) End Using End If Dim indexedBmp = gr.Frames(i).ReadAsIndexed8bppBitmap() gw.AppendFrame(indexedBmp, 0, 0, GifDisposalMethod.DoNotDispose, 16) Next End Using ms.Seek(0, SeekOrigin.Begin) Return ms End Function
Public ReadOnly Property DefaultMime() As String Get Return MimeTypes.GIF End Get End PropertyEnd Class