0
這是我的位圖創建代碼使24位色位圖在正常亮度等級保存
public static Bitmap Plot24(ref byte[] bufferArray, int lengthOfBufferArray, String fileName)
{
int position = 0;
int rows = (int)Math.Ceiling((double)lengthOfBufferArray/(3*columns));
Bitmap b = new Bitmap(columns , rows, PixelFormat.Format24bppRgb);
BitmapData bmd = b.LockBits(new Rectangle(0, 0, columns , rows), ImageLockMode.ReadWrite, b.PixelFormat);
unsafe
{
for (int j = 0; j < rows; j++)
{
byte* row = (byte*)bmd.Scan0 + ((j * bmd.Stride));
for (int i = 0; i < columns*3; i+=3)
{
if (position < lengthOfBufferArray)
{
try
{
row[i+2] = bufferArray[position];
position++;
if (position < lengthOfBufferArray)
{
row[i+1] = bufferArray[position];
position++;
}
else
{
break;
}
if (position < lengthOfBufferArray)
{
row[i] = bufferArray[position];
position++;
}
else
{
break;
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
b.UnlockBits(bmd);
return b;
}
}
這也是我如何保存返回的位圖
b.Save(outputFilename, ImageFormat.Bmp);
當我在所有FF十六進制緩衝陣列仍然是白色像素不是白色的。
而當我在bufferArray中的隨機值其他顏色也看起來像他們被沖走。
我怎樣才能保存在正常的亮度水平?
您的代碼使像素與字節混淆。每個像素都有3個字節,因此您不使用位置
2012-02-18 17:21:47
iam不會爲紅色,綠色和藍色寫入相同的值。我不僅得到灰色,而且有一個例外,我得到各種各樣的顏色,所有這些都像是被沖走了。我想保持亮度水平 – klijo 2012-02-19 05:13:25