抠图的问题
各位,我用的c#,我想把一张图片除了背景色给抠出来。运行这段代码后,cpu和内存飙升,这样肯定不行。等了半天,还发生一般gdi+错误。无语。麻烦知道的帮我解惑。现将代码贴出。就几句,^_^。
private void Form1_Paint(object sender, PaintEventArgs e)
{
Bitmap map = (Bitmap)Image.FromFile("temp.jpg");
Graphics gra = e.Graphics;
Color blackcr,cr;
blackcr = map.GetPixel(0, 0);
Region rgn,rgntemp,rgnlast;
rgn = new Region(new Rectangle(0, 0, map.Width, map.Height));
rgnlast = new Region(new Rectangle(0, 0, 1, 1));
Rectangle rec = new Rectangle(0, 0, 1, 1);
rgntemp = new Region(new Rectangle(0, 0, 1, 1));
for (int m = 0; m < map.Height; m++)
{
for (int n = 0; n < map.Width; n++)
{
if (map.GetPixel(n, m) != blackcr)
{
rec.X = n;
rec.Y = m;
rgnlast.Complement(rec);
break;
}
}
break;
}
for (int i = 0; i < map.Height ; i++)
for (int j = 0; j < map.Width ; j++)
{
if (map.GetPixel(j, i) != blackcr)
{
rec.X = j;
rec.Y = i;
rgntemp.Complement(rec);
rgnlast.Union(rgntemp);
}
}
gra.FillRegion(new SolidBrush(Color.White), rgnlast);
gra.Dispose();
}
那个temp.jpg随便找个图片代替下。
------解决方案--------------------
先根据你的图 获取图形的颜色
LockBits() 颜色
Marshal.Copy()到BYTE
根据颜色 进行盘大
然后复制到新的图形....