生成透明GIF的方法

ContractedBlock.gif ExpandedBlockStart.gif Code
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(0255255255)
                
End If
            
Next


            
Dim bd = tempgif.LockBits(New Rectangle(00, tempgif.Width, tempgif.Height), ImageLockMode.ReadOnly, tempgif.PixelFormat)

            
Dim bytes(bd.Stride * bd.Height - 1As 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(00, 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

转载于:https://www.cnblogs.com/ashei/archive/2009/10/28/1591716.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值