zoukankan      html  css  js  c++  java
  • 图片转成透明底

    string sp = Server.MapPath("/");//"/PDF/tz/tempword/"
                if (!System.IO.Directory.Exists(sp))
                {
                    System.IO.Directory.CreateDirectory(sp);
                }
                //Request.Files[0].SaveAs(path);
    
                ImageAttributes vAttr = new ImageAttributes(); //vAttr是关键
    
                //图像中与0,0那点相同的颜色要变成透明
    
                Bitmap bitmap = new Bitmap(Request.Files[0].InputStream);
                Bitmap bitmappng = new Bitmap(165, 165);//新生成的图片宽与高
                vAttr.SetColorKey(bitmap.GetPixel(0, 0), bitmap.GetPixel(0, 0));
                Graphics g = Graphics.FromImage(bitmappng);
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                g.DrawImage(bitmap, new Rectangle(10, 10, 165, 165), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, vAttr);
                g.Save();
                g.Dispose();
                bitmappng.Save(sp + "png.png", ImageFormat.Png);
    ImageAttributes vAttr = new ImageAttributes(); //vAttr是关键
    
            //图像中与0,0那点相同的颜色要变成透明
    
            Bitmap bitmap = new Bitmap(Request.Files[0].InputStream);
            Bitmap bitmappng = new Bitmap(165, 165);
            bitmap.SetPixel(0, 0, Color.FromArgb(0, 0, 0));//设置为统一颜色
    
            /*将图片的背景只留下红色*/
            for (int i = 0; i < bitmap.Width; i++)
            {
                for (int j = 0; j < bitmap.Height; j++)
                {
                    System.Drawing.Color c = bitmap.GetPixel(i, j);
                    /*找到红色的RGB范围,然后再进行替换*/
                    if (c.R > 128 && (c.R > c.G + 20 && c.R > c.B + 20))  /*非红色要替换成透明 每种颜色要存在一定的差距*/
                    {
                        //bitmappng.SetPixel(i, j, System.Drawing.Color.Transparent);
                        //bitmap.SetPixel(i, j, Color.FromArgb(0,c.R, c.G, c.B));//设置为统一颜色
                    }
                    else
                    {
                        bitmap.SetPixel(i, j, Color.FromArgb(0, 0, 0, 0));//设置为统一颜色
                    }
                }
            }
            vAttr.SetColorKey(bitmap.GetPixel(0, 0), bitmap.GetPixel(0, 0));
            Graphics g = Graphics.FromImage(bitmappng);
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.DrawImage(bitmap, new Rectangle(0, 0, 165, 165), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, vAttr);
            g.Save();
            g.Dispose();
    
    
    
            bitmappng.Save(path, ImageFormat.Png);
  • 相关阅读:
    添加常驻Notification
    Java 数组操作
    一百本英文原著之旅 ( 15 finished )
    SQLServer2005中查询语句的执行顺序
    高效程序员的45个习惯
    博客园经典闪存语录
    for xml path('') 引发的数据不完整
    ajax向前台输出二维数组 并解析
    重视知识的本质
    C语言排序
  • 原文地址:https://www.cnblogs.com/gxivwshjj/p/13180267.html
Copyright © 2011-2022 走看看