adm-fil писал(а):Если нет кода по выводу bmp-файла на экран,
Код вывода картинки на экран сильно зависит от способа, которым задействуешь видеорежим. Их может быть множество, а у тебя используется какой-то определённый, древний.
adm-fil писал(а): то нужен хотя-бы код читающий его в оперативную память.
А вот это запросто! В fpc есть файл fpcbuild-2.6.4/fpcsrc/packages/fcl-image/examples/interpoldemo.pp
Меняется несколько строчек и вот он уже читает и масштабирует файл original.bmp сделанный только что в гимпе.
- Код: Выделить всё
program interpoldemo;
// Interpolation demo for fcl-image by Bernd Kreuss. Mantis #22245
// Loads original.png (not included) and scales it back to 64x64
{$mode objfpc}{$H+}
uses
Classes,
sysutils,
FPimage,
FPImgCanv,
// FPReadPNG,
// FPWritePNG;
FPReadBMP, FPWriteBMP;
var
ImOriginal: TFPMemoryImage;
ImScaled: TFPMemoryImage;
CanvScaled: TFPImageCanvas;
// Reader: TFPReaderPNG;
// Writer: TFPWriterPNG;
Reader: TFPReaderBMP;
Writer: TFPWriterBMP;
begin
ImOriginal := TFPMemoryImage.Create(0, 0);
ImScaled := TFPMemoryImage.Create(64, 64);
// Reader := TFPReaderPNG.create;
// Writer := TFPWriterPNG.create;
Reader := TFPReaderBMP.create;
Writer := TFPWriterBMP.create;
// Writer.UseAlpha := True;
// ImOriginal.LoadFromFile('original.png', Reader);
ImOriginal.LoadFromFile('original.bmp', Reader);
CanvScaled := TFPImageCanvas.create(ImScaled);
CanvScaled.StretchDraw(0,0,63,63, ImOriginal);
// ImScaled.SaveToFile('scaled.png', Writer);
ImScaled.SaveToFile('scaled.bmp', Writer);
Reader.Free;
Writer.Free;
ImOriginal.Free;
ImScaled.Free;
end.
Но если модулям всё равно, читать bmp или png, то лучше использовать png, потому что он со сжатием, имеет альфаканал и больше в почёте и больше где применяется.