Сохранение растрового изображения как 32bpp не сохраняет прозрачность - PullRequest
1 голос
/ 21 января 2011
using (var bmp = new Bitmap(image.Width, image.Height, PixelFormat.Format32bppArgb))
using (var g = Graphics.FromImage(bmp))
{
    g.Clear(Color.Transparent);
    g.DrawImage(image, 0, 0);
    bmp.Save("image.bmp", ImageFormat.Bmp);
}

Вопрос должен быть ясен: почему при сохранении в BMP прозрачность увеличивается до черного , а при сохранении в PNG сохраняетсяэто ?

Просто чтобы уточнить: image в формате Format8bppIndexed и его палитра содержит прозрачные цвета (например,он корректно рисует на форме / в графическом окне)

Редактировать: My bad, Bitmap.Save () фактически сохраняет BMP в формате Format32bppRgb , дажехотя формат растрового изображения Format32bppArgb .

1 Ответ

6 голосов
/ 21 января 2011

Это потому, что по умолчанию формат файла bmp не поддерживает прозрачность, в то время как формат файла png поддерживает.

Если вы хотите прозрачность, у вас будетиспользовать PNG.Алгоритмы сжатия без потерь, поэтому вы не получите артефактов на своем изображении.Файл также займет меньше места на диске.

...