首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生成透明GIF的方法

生成透明GIF的方法

作者头像
用户1687945
发布2018-05-02 11:28:15
1K0
发布2018-05-02 11:28:15
举报
Private Shared Function CreateTransParentGif(ByVal img As Image) As Bitmap
            
            Dim tempms As New System.IO.MemoryStream()
            img.Save(tempms, ImageFormat.Gif)
            img.Dispose()
            Dim tempgif As Bitmap = Bitmap.FromStream(tempms)
            tempms.Dispose()

            Dim pal = tempgif.Palette  'GetColorPalette()

            For index As Integer = 0 To pal.Entries.Length - 1
                If pal.Entries(index).R = 0 And pal.Entries(index).G = 0 And pal.Entries(index).B = 0 Then
                    pal.Entries(index) = Color.FromArgb(0, 255, 255, 255)
                End If
            Next

            Dim bd = tempgif.LockBits(New Rectangle(0, 0, tempgif.Width, tempgif.Height), ImageLockMode.ReadOnly, tempgif.PixelFormat)
            Dim bytes(bd.Stride * bd.Height - 1) As Byte
            Marshal.Copy(bd.Scan0, bytes, 0, bd.Stride * bd.Height)

            tempgif.UnlockBits(bd)

            'pal.Entries(40) = Color.FromArgb(0, 255, 255, 255)
            'tempgif.Palette = pal

            Dim outgif As New Bitmap(tempgif.Width, tempgif.Height, PixelFormat.Format8bppIndexed)
            outgif.Palette = pal
            Dim ind = outgif.LockBits(New Rectangle(0, 0, outgif.Width, outgif.Height), ImageLockMode.WriteOnly, outgif.PixelFormat)
            Marshal.Copy(bytes, 0, ind.Scan0, ind.Stride * ind.Height)
            outgif.UnlockBits(ind)
            tempgif.Dispose()
            Return outgif
        End Function
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-10-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档