IndexedGif.vb
''
'' このコードは、DioDocs for Imaging のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Collections.Generic
Imports System.Linq
Imports System.Numerics
Imports GrapeCity.Documents.Drawing
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Imaging
'' このサンプルは、トゥルーカラーフレームを含む既存の GIF
'' MakeGif サンプルで生成されたもの)を読み込み、
'' その各フレームをインデックス付き 8bpp 画像に変換します。
'' また、変換後の GIF にグローバルパレットを追加します。
''(パレットは最初のフレームから取得されます。)
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()
'' ソースとなるGIFからフレームを読み込み、それらを8bppに変換してターゲットのGIFに保存します。
Using gr = New GcGifReader(Path.Combine("Resources", "Gifs", "goldfish.gif")), gw = New GcGifWriter(ms)
For i = 0 To gr.Frames.Count - 1
'' 最初のフレームに基づいて、ターゲットのGIFにグローバルパレットを追加します。
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 Property
End Class