Как я могу преобразовать изображение JPEG в изображение PNG с прозрачным фоном? - PullRequest
4 голосов
/ 11 октября 2010

У меня есть изображение в формате JPEG с белым фоном и черным кружком.

Как преобразовать это изображение в формат PNG, в котором белый фон будет прозрачным, а черный останется там?

Я тоже программист, и если будут какие-то идеи в коде на C #, я буду очень счастлив.Также я ищу конвертер, инструмент, что-нибудь программировать.

Спасибо.

Джефф

Ответы [ 2 ]

10 голосов
/ 11 октября 2010

Здесь работает, но медленное решение. Вы можете ускорить его, используя Bitmap.LockBits ().

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);
}
1 голос
/ 11 октября 2010

Вы можете использовать ImageMagick инструмент , как в этом примере .

Вам потребуется установить для параметра -background значение transparent, для параметра -alpha установить значение set и использовать параметр -transparent, чтобы установить цвет, который требуется интерпретировать как прозрачный. См. Также справочник по инструменту преобразования .

...