Как преобразовать PNG в BMP без потери качества

Это непростой вопрос. Сначала попробовал это с ужасным результатом

Image Dummy = Image.FromFile("image.png");   
Dummy.Save("image.bmp", ImageFormat.Bmp);

введите описание изображения здесь----- преобразуется в ---->  введите описание изображения здесь

Понятия не имею, что могло случиться. Какие-нибудь подсказки?


person Alejandro Lozdziejski    schedule 02.02.2015    source источник
comment
Это как-то связано с прозрачностью исходного изображения. Я просто попробовал, сохранив ваш PNG с белым фоном, и преобразование работает нормально. Я экспериментировал с классом PngBitmapDecoder, но получаю те же результаты, поэтому пока не уверен в решении.   -  person Gary Wright    schedule 02.02.2015
comment
Вам нужна программа в .net, или это только одно-единственное преобразование с предоставленным изображением?   -  person Jongware    schedule 02.02.2015
comment
Это для сценария, который я пишу, поэтому двоичный файл, который я мог бы вызвать из процесса .net, тоже подействовал бы.   -  person Alejandro Lozdziejski    schedule 02.02.2015


Ответы (1)


И BMP, и PNG не содержат потерь, но PNG поддерживает прозрачность, а BMP - нет. Поскольку ваше исходное изображение имеет прозрачность, перед его преобразованием вы должны сначала спросить себя, что вы хотите сделать с (полу) прозрачными пикселями, и не позволять кодировщику BMP решать (похоже, он принимает некоторые странные решения, кстати).

Чтобы убрать количество прозрачности, по идее, добавить какой-нибудь непрозрачный фон (белый или черный, обычно - в вашем случае белый). Чтобы сделать это на C #, см. этот вопрос

person leonbloy    schedule 02.02.2015