我有一個功能,需要一個顏色位圖,並使其灰度,但內存使用率太高。我之前使用過Marshal.Copy方法,沒有內存泄漏,但速度較慢。任何幫助?使用指針時內存使用量過多?
Bitmap b = a.Clone(new Rectangle(0, 0, a.Width, a.Height), a.PixelFormat);
BitmapData bData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, b.PixelFormat);
byte bitsPerPixel = Convert.ToByte(Image.GetPixelFormatSize(bData.PixelFormat));
/*This time we convert the IntPtr to a ptr*/
byte* scan0 = (byte*)bData.Scan0.ToPointer();
//Console.WriteLine(scan0);
for (int i = 0; i < bData.Height; ++i)
{
for (int j = 0; j < bData.Width; ++j)
{
byte* data = scan0 + i * bData.Stride + j * bitsPerPixel/8;
data[0] = data[1] = data[2] = (byte)((data[0] + data[1] + data[2])/3);
}
}
b.UnlockBits(bData);
bData = null;
return b;
如何測量內存使用情況? – 2010-11-20 09:46:41
與任務管理器,不是最好的方式,但它確實表明內存沒有被釋放。 – Jon 2010-12-16 06:30:43