寫圖片到HTTP-Response輸出資料流是非常簡單的,不過寫一個透明的GIF映像到輸出資料流就比較困難了。這個程式,在ASP.NET中使用C#語言先建立調色盤,然後改變所有Alpha值到0,這時候才會透明GIF中的透明顏色。
System.Drawing.Image _gifImage;
_gifImage = System.Drawing.Image.FromFile(Server.MapPath("white.JPG"));
Bitmap bm = new Bitmap(_gifImage.Width, _gifImage.Height,
PixelFormat.Format8bppIndexed);
// Get the palette from the bitmap
ColorPalette pal = bm.Palette;
// Set Alpha to 0
for (int i = 0; i < pal.Entries.Length; i++)
{
Color col = pal.Entries[i];
pal.Entries[i] = Color.FromArgb(0, col.R, col.G, col.B);
}
// assign palette
bm.Palette = pal;
//to copy the bitmap data we need to lock the source &
//destination bits
BitmapData src = ((Bitmap)_gifImage).LockBits(new Rectangle
(0, 0, _gifImage.Width, _gifImage.Height), ImageLockMode.ReadOnly,
_gifImage.PixelFormat);
BitmapData dst = bm.LockBits(new Rectangle(0, 0, bm.Width, bm.Height),
ImageLockMode.WriteOnly, bm.PixelFormat);
//finished, unlock the bits
((Bitmap)_gifImage).UnlockBits(src);
bm.UnlockBits(dst);
//Set Response Type to "image/gif"
Response.ContentType = "image/gif";
//Writing the gif directly into the Output-Stream
bm.Save(Response.OutputStream, ImageFormat.Gif);
//cleaning up
bm.Dispose();
_gifImage.Dispose();
//Send output stream
Response.Flush();