3

外部コード ライブラリなしで、.gif ファイルを個々のフレームに分割したり、逆に画像のグループを 1 つに組み立てたりすることは可能ですか?

System.Drawing 名前空間でしばらく遊んでいますが、その方法がわかりません。

また、GetFrameCount のパラメーターとして何を渡すかがわかりません。「ディメンション」が何を意味するのかわかりません。明らかに、それをnullのままにすることはできません。

さらに、最初にgifを分割し、再生を模倣する方法で再コンパイル/表示することなく、gifを再生制御することは可能ですか?

助けてくれてありがとう。

これは 2008 年の vb.net にあります。

編集:外部ライブラリなしでは不可能な場合、使用するのに最適なものは何ですか?

4

2 に答える 2

4

私はこれに似たコードを使用しましたが、うまくいきました...私はそれを発明したわけではないので、(忘れてしまいました)...(おそらくここに)発明した人に感謝します。

Private Class Frame
    Public Property MilliSecondDuration As Integer
    Public Property Bitmap As Image
    Public Sub New(ByVal duration As Integer, ByVal img As Bitmap)
        Me.MilliSecondDuration = duration
        Me.Bitmap = img
    End Sub
End Class

Private Function SeparateGif() As Frame()

    Dim gif As Image = Image.FromFile("MyGif.gif")

    Dim fd As New Imaging.FrameDimension(gif.FrameDimensionsList()(0))
    Dim frameCount As Integer = gif.GetFrameCount(fd)
    Dim frames(frameCount) As Frame

    If frameCount > 1 Then
        Dim times() As Byte = gif.GetPropertyItem(&H5100).Value
        For i As Integer = 0 To frameCount - 1
            gif.SelectActiveFrame(fd, i)
            Dim length As Integer = BitConverter.ToInt32(times, 4 * i) * 10
            frames(i) = New Frame(length, New Bitmap(gif))
        Next
    End If

    Return frames

End Function
于 2011-01-13T09:36:12.653 に答える
0

このフォーラムの投稿によると、アニメーション GIF の保存は .NET ではサポートされていません。いいえ、外部コード ライブラリがなければ、おそらく不可能です。

外部ライブラリを嫌う特別な理由はありますか?

于 2009-09-07T02:20:02.297 に答える