C# 如何将JPEG图像转换为背景透明的PNG图像?
我有一张JPEG格式的图像,背景为白色,圆圈为黑色 如何将此图像转换为PNG格式,使白色背景透明,黑色保留在那里 我也是一名程序员,如果有一些关于C代码的想法,我会非常高兴。此外,我正在寻找一个转换器,工具,程序的任何东西 多谢各位 杰夫你可以使用这个工具C# 如何将JPEG图像转换为背景透明的PNG图像?,c#,image,png,jpeg,C#,Image,Png,Jpeg,我有一张JPEG格式的图像,背景为白色,圆圈为黑色 如何将此图像转换为PNG格式,使白色背景透明,黑色保留在那里 我也是一名程序员,如果有一些关于C代码的想法,我会非常高兴。此外,我正在寻找一个转换器,工具,程序的任何东西 多谢各位 杰夫你可以使用这个工具 您需要将-background选项设置为transparent,将-alpha选项设置为set,并使用-transparent选项设置要解释为透明的颜色。另请参见。此处正在运行,但速度较慢。您可以使用Bitmap.LockBits()来加速它
您需要将
-background
选项设置为transparent
,将-alpha
选项设置为set
,并使用-transparent
选项设置要解释为透明的颜色。另请参见。此处正在运行,但速度较慢。您可以使用Bitmap.LockBits()来加速它
使用(Image img=Image.FromFile(文件名))
使用(位图bmp=新位图(img))
{
对于(int x=0;x
任何合理的图像编辑器(如Paint.NET)都可以做到这一点。你真的需要代码吗?我其实不需要代码,我只希望背景是透明的,不管如何和使用什么工具。嗯,我应该导入什么来使用“图像”、“位图”和“颜色”?你需要参考System.Drawing.dllok,代码工作正常。。。。我的下一个问题是:我如何知道我的图像有一个真正透明的背景?这肯定不是程序员的方法,但我会使用Paint.NET中的颜色拾取工具来检查:)如果这个解决方案太慢,可能是因为GetPixel
添加了一个额外的间接层。如果需要,通过指针使用不安全的代码可能会更快。请参阅示例,尽管您需要根据自己的目的对其进行调整。
using (Image img = Image.FromFile(filename))
using (Bitmap bmp = new Bitmap(img))
{
for (int x = 0; x < img.Width; x++)
{
for (int y = 0; y < img.Height; y++)
{
Color c = bmp.GetPixel(x, y);
if (c.R == 255 && c.G == 255 && c.B == 255)
bmp.SetPixel(x, y, Color.FromArgb(0));
}
}
bmp.Save("out.png", ImageFormat.Png);
}