Конвертация png -> bmp delphi

программирование программы windows Delphi делфи

Конвертирую png в bmp, всё бы ничего, но вся прозрачность заменяется белым цветом, как сделать чтобы заменялась чёрным?! Замучался уже, даже пытался в модуле переписать что то, но без толку. Спасайте!

procedure TForm1.Button3Click(Sender: TObject);
var
png:TPNGObject;
bmp:Graphics.TBitmap;
begin
PNG := TPNGObject.Create;
PNG.LoadFromFile('C:\Games\img');
bmp:=graphics.TBitmap.Create;
bmp.Assign(png);
bmp.SaveToFile('C:\Games\img.bmp');
end;
Ответы:
Насколько понимаю при работе с TPNGObject он работает с RGBA форматом.
Т.е. Вам надо выделить компоненту прозрачности и исходя из неё закрашивать конкретные пиксели на конечном изображении нужным Вам цветом.
Так
var
 png: TPNGObject;
 bmp: TBitmap;
begin
 png := TPNGObject.Create;
 try
   png.LoadFromFile('C:\Games\img');
   bmp := TBitmap.Create;
   try
     bmp.SetSize(png.Width, png.Height);
     bmp.PixelFormat := pf32bit;
     bmp.AlphaFormat := afIgnored;
     bmp.Canvas.Brush.Color := clMoneyGreen; // или другой цвет для прозрачности
     bmp.Canvas.FillRect(Rect(0, 0, bmp.Width, bmp.Height));
     if png.Palette <> 0 then
       bmp.Palette := CopyPalette(png.Palette);
     bmp.Canvas.Draw(0, 0, png);
     bmp.SaveToFile('C:\Games\img.bmp');
   finally
     bmp.Free;
   end;
 finally
   png.Free;
 end;
end;


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.