zoukankan      html  css  js  c++  java
  • ASP.NET直接写透明GIF图像到输出流源代码

    写图片到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();
  • 相关阅读:
    - 错误笔记
    只是一个没有人知道的蒟蒻
    省选前模板复习
    数学知识小结#1
    写在NOIP2018后
    Atcoder&CodeForces杂题11.7
    Atcoder&CodeForces杂题11.6
    [NOIP11.1模拟赛]补番报告
    [JZOJ5281]钦点题解--瞎搞+链表
    [JZOJ5280]膜法师题解--思维+前缀和
  • 原文地址:https://www.cnblogs.com/top5/p/1593715.html
Copyright © 2011-2022 走看看