C#中怎么将一张图片中的白色做成透明的,而其他颜色保持不变??? 急!!! 各位大侠帮帮忙!!!
if(pictureBox1.Image==null)return;Bitmapbmp=newBitmap(pictureBox1.Image,pictureBox1.I...
if (pictureBox1.Image == null)
return;
Bitmap bmp = new Bitmap(pictureBox1.Image, pictureBox1.Image.Size);
BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
int length = data.Stride * data.Height;
IntPtr ptr = data.Scan0;
byte[] buff = new byte[length];
Marshal.Copy(ptr, buff, 0, length);
for (int i = 3; i < length; i += 4)
{
if (buff[i - 1] >= 230 && buff[i - 2] >= 230 && buff[i - 3] >= 230)
{
buff[i] = 0;
}
}
Marshal.Copy(buff, 0, ptr, length);
bmp.UnlockBits(data);
pictureBox2.Image = bmp;
我改成上面的代码,实现了透明功能,但是,怎么讲pictureBox2.Image 保存为PNG图片??? 展开
return;
Bitmap bmp = new Bitmap(pictureBox1.Image, pictureBox1.Image.Size);
BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
int length = data.Stride * data.Height;
IntPtr ptr = data.Scan0;
byte[] buff = new byte[length];
Marshal.Copy(ptr, buff, 0, length);
for (int i = 3; i < length; i += 4)
{
if (buff[i - 1] >= 230 && buff[i - 2] >= 230 && buff[i - 3] >= 230)
{
buff[i] = 0;
}
}
Marshal.Copy(buff, 0, ptr, length);
bmp.UnlockBits(data);
pictureBox2.Image = bmp;
我改成上面的代码,实现了透明功能,但是,怎么讲pictureBox2.Image 保存为PNG图片??? 展开
展开全部
Bitmap bitmap=new Bitmap("filename");
bitmap.MakeTransparent(Color.White);
bitmap.Save("newfilename");
注意,后面保存的文件名好像不能跟开始的那个文件名重复,也就是不能覆盖原文件
把Bitmap保存为png,代码(bmp为你代码中给定的Bitmap):
bmp.Save("pngFilename", ImageFormat.Png);
bitmap.MakeTransparent(Color.White);
bitmap.Save("newfilename");
注意,后面保存的文件名好像不能跟开始的那个文件名重复,也就是不能覆盖原文件
把Bitmap保存为png,代码(bmp为你代码中给定的Bitmap):
bmp.Save("pngFilename", ImageFormat.Png);
更多追问追答
追问
但是我在调用后,程序运行一次可以,第二次就中断,也就是一次性的!
追答
中断时弹什么错没有?
是不是你几个filename搞混淆了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询