asp.net生成透明GIF图片的方法
首先呢,我们准备一个PLMM,嘿嘿:
大家看到PLMM帽子边上的那个黄色圆圈了吗?一会我们就要将它变成透明的,生成一张可以在IE6中透明的GIF图。
首先呢,我们使用常规方式:
1Dim gif1 As New Bitmap("plmm.jpg")
2 gif1.MakeTransparent(Color.Yellow)
3 PictureBox1.Image = gif1
4
5 '这里我将它保存为gif到流里,这里是内存流,在asp.net中则是outputstream ,再显示在picturebox2里
6 Dim ms As New System.IO.MemoryStream()
7 gif1.Save(ms, Imaging.ImageFormat.Gif)
8
9 Dim gif2 = Bitmap.FromStream(ms)
10 ms.Dispose()
11
12 PictureBox2.Image = gif2
13
14 '***变黑了****
这个结果是十分令人沮丧的:那个圆圈非但没透明,甚至还变成了黑色:
那么如果我直接保存为文件呢?图我就不贴了,和上面一样,还是黑的。

2

3

4

5

6

7

8

9

这是我网上进行了一番搜索,大致上可以搜到这么一个版本:先修改调色板,然后再另外拷贝数据。
大致原理是:GIF是一种索引图像,最大色彩数256色 (PS:其实这个色彩数不少了,想当年,我上学时候经常逃课去玩
世嘉五代 MD游戏机,那个同屏发色数才16色,同期的超级任天堂的同屏发色数也不过256色,呵呵,这些都是从<<电子游戏软件>>里看来的)
GIF有一个调色板,最大有256个颜色索引,然后每个像素保存的是调色板的颜色索引值。故此,只需修改调色板,即可调整
图像的颜色。
OK,那么我们来改下调色板:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

结果如图:
看起来效果不错,纯黑色部分被透明了!而且么,还出来个反色特效,HOHO
不过你不要高兴得太早,如果这时候你保存的话,它还是黑的!!