Я пытаюсь сохранить Растровый класс, который имеет прозрачность как png файл с прозрачностью. У меня нет удачи.
это - то, что я делаю
Bitmap ret = new Bitmap(bWidth, bHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
ret.Save(filename, ImageFormat.Png);
Я также пытался сохранить файл с filestream, и это не имело никакого значения.
Когда изображение находится в Поле изображения, прозрачность существует, но когда я сохраняю меня, я просто получаю черный фон.
Я действительно не хочу использовать любой сторонний код, они нашли способ сделать это, я хотел бы также.
спасибо.
Вы пробовали использовать метод Bitmap.MakeTransparent ()?
Я давно не занимался редактированием / сохранением изображений, но, насколько я помню, правильные PNG отличаются от большинства. Я думаю, вам нужно использовать настоящий FileStream.
РЕДАКТИРОВАТЬ: А, нашел здесь пример
FileStream imageStream= new FileStream( filename, FileMode.Create );
myBitmap.Save( imageStream, ImageFormat.Png );
imageStream.Close();
РЕДАКТИРОВАТЬ2: После дополнительных исследований я думаю, что промежуточный шаг требуется только при определенных обстоятельствах.
Также возможно, что поскольку вы используете «MakeTransparent», он улавливает индексированный альфа-канал, но пытается сохранить на основе фактического альфа-значения каждого пикселя. Вы можете попробовать установить значения альфа-канала изображения.
Для сохранения в формате PNG ТРЕБУЕТСЯ поиск потока, такого как FileStream или MemoryStream. . Если вы сохранитесь в одном из них и получите оттуда исключение GDI + или подобное. Надеюсь это поможет.