PNG В BMP DELPHI
В Delphi существует несколько способов преобразовать изображение в формате PNG в формат BMP.
Один из простых способов - использовать стандартную библиотеку Graphics и функцию TBitmap.LoadFromFile для загрузки PNG изображения, после чего можно сохранить полученный объект TBitmap в .bmp файл:
var pngImage: TPngImage; bmpImage: TBitmap;begin pngImage := TPngImage.Create; bmpImage := TBitmap.Create; try pngImage.LoadFromFile('image.png'); bmpImage.Assign(pngImage); bmpImage.SaveToFile('image.bmp'); finally pngImage.Free; bmpImage.Free; end;end;
Еще один способ - использовать библиотеку LibPNG и выполнить преобразование через буфер изображения:
var pngImage: TPngImage; pngStream: TMemoryStream; buffer: pByte; row: pByte; bmpImage: TBitmap; i, j: Integer;begin pngImage := TPngImage.Create; pngStream := TMemoryStream.Create; bmpImage := TBitmap.Create; try pngImage.LoadFromFile('image.png'); pngImage.SaveToStream(pngStream); pngStream.Seek(0, soFromBeginning); fpng_create_read_struct(PNG_LIBPNG_VER_STRING, nil, nil, nil); fpng_create_info_struct(fpReadStruct); fpng_init_io(fpReadStruct, pngStream.Memory, pngStream.Size); fpng_read_info(fpReadStruct, fpInfoStruct); fpng_set_expand(fpReadStruct); fpng_set_strip_16(fpReadStruct); fpng_set_gray_to_rgb(fpReadStruct); fpng_set_add_alpha(fpReadStruct, 0, Fpng_mask); bmpImage.PixelFormat := pf32bit; bmpImage.Width := pngImage.Width; bmpImage.Height := pngImage.Height; GetMem(buffer, pngImage.Width * 4); for i := 0 to pngImage.Height - 1 do begin row := pngImage.AlphaScanline[i]; fpng_read_rows(fpReadStruct, @row, nil, 1); for j := 0 to pngImage.Width - 1 do begin buffer[j * 4 + 0] := row[j * 4 + 0]; buffer[j * 4 + 1] := row[j * 4 + 1]; buffer[j * 4 + 2] := row[j * 4 + 2]; buffer[j * 4 + 3] := 255 - int(row[j * 4 + 3]); end; bmpImage.Canvas.Draw(0, i, CreateBitmap(pngImage.Width, 1, 1, 32, buffer)); end; bmpImage.SaveToFile('image.bmp'); finally pngImage.Free; pngStream.Free; bmpImage.Free; if buffer <> nil then FreeMem(buffer); end;end;
Это два примера, как можно преобразовать png в bmp в Delphi. Конечный выбор метода зависит от ваших потребностей и ограничений.
Learn Delphi Programming - Unit 6.8 - Exploring Images (TImage Class)
Delphi - Load picture into Delphi
Convert Bitmap Image File To PNG Image by Delphi تحويل الصور من صيغة إلى أخرى في الدلفي
Reduce the JPG, BMP, GIF or PNG image Size from 10 MB to 40KB - No Software Require to Compress IMG
mb b180 delphi crd 3.40 stage1 Read Write With Pcmflash checksum corectie With WinOLS
Windows : Convert BMP file to PNG file in-memory