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

Реклама
Новое
Реклама