【发布时间】:2017-08-11 10:26:29
【问题描述】:
我的目标是加载我的 256x256 像素大小的位图,并为每个像素分配一个白色或黑色值,具体取决于实际值是否低于某个阈值。
问题是,只有 1/3 的位图宽度有新的像素数据,即使内部 for 语句迭代整个宽度。
unsafe
{
BitmapData bitmapData = bitmap.LockBits(new Rectangle(0,0, 256, 256), ImageLockMode.ReadWrite, bitmap.PixelFormat);
for (int j = 0; j < bitmapData.Height; j++)
{
byte* row = (byte*)bitmapData.Scan0 + (j * bitmapData.Stride);
for (int k = 0; k < bitmapData.Width; k++)
{
if (row[k] <= TresholdFilter)
row[k] = 0;
if (row[k] > 0)
row[k] = 255;
}
}
bitmap.UnlockBits(bitmapData);
}
【问题讨论】:
-
TresholdFilter的值是多少? -
它是一个 Int32,范围为 0-255
-
有可能,在某些情况下,您的
row[k]中仍保留初始值?您是否尝试过使用其他图片? -
看起来你的位图是 rgb,所以那里没有“白色”像素,当像素的所有三个颜色部分都是 255 时是白色的。
-
bitmap.PixelFormat 的值是多少? Format24bppRgb 有任何机会吗?
标签: c# .net bitmap system.drawing