C# 如何将JPEG图像转换为背景透明的PNG图像?

C# 如何将JPEG图像转换为背景透明的PNG图像?,c#,image,png,jpeg,C#,Image,Png,Jpeg,我有一张JPEG格式的图像,背景为白色,圆圈为黑色 如何将此图像转换为PNG格式,使白色背景透明,黑色保留在那里 我也是一名程序员,如果有一些关于C代码的想法,我会非常高兴。此外,我正在寻找一个转换器,工具,程序的任何东西 多谢各位 杰夫你可以使用这个工具 您需要将-background选项设置为transparent,将-alpha选项设置为set,并使用-transparent选项设置要解释为透明的颜色。另请参见。此处正在运行,但速度较慢。您可以使用Bitmap.LockBits()来加速它

我有一张JPEG格式的图像,背景为白色,圆圈为黑色

如何将此图像转换为PNG格式,使白色背景透明,黑色保留在那里

我也是一名程序员,如果有一些关于C代码的想法,我会非常高兴。此外,我正在寻找一个转换器,工具,程序的任何东西

多谢各位

杰夫

你可以使用这个工具


您需要将
-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);
}