c#中new bitmap的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 15:31:55
c#中 Bitmap I = new Bitmap(pictureBox1.Image);
明明pictureBox1.Image的PixelFormat = Format24bppRgb
但是I的PixelFormat = Format32bppArgb
我要令I的PixelFormat = Format24bpprgb要怎么办?
那么这个alpha通道,我在进行彩色图像灰度化的时候,是不是可以不用它?我做了一个灰度化,但是图像整体偏黑,不知道是不是这个alpha对透明度的影响问题?
wefgod3你这个算法我一开始也采用了,很简单但是处理的速度很慢。一幅700*500的图片要处理几分钟。应该采用LockBits与UnlockBits的方法操作内存。如果有兴趣的话,可以参看http://zhidao.baidu.com/question/66246018.html?si=2

private void button1_Click(object sender, EventArgs e)
{
button4.Enabled = true;
Bitmap bmp1 = new Bitmap(pictureBox2.Image);
Bitmap bmp2 = new Bitmap(pictureBox2.Image);
Color c1, c2;
int a, r, g, b;
for (int x = 0; x < bmp1.Width; x++)
for (int y = 0; y < bmp1.Height; y++)
{
c1 = bmp2.GetPixel(x, y);
a = c1.A;
r = g = b = (c1.B + c1.G + c1.R) / 3;
c2 = Color.FromArgb(a,r,g,b);
bmp2.SetPixel(x, y, c2);
}
pictureBox2.Refresh();
pictureBox2.Image = bmp2;
}

灰度的算法
我过去自己写过
alpha的你没修改没什么问题吧?反正也就是透明度

在内存里的图没有24位色,只有32位的