Otwieranie bitmapy

0

Chcialbym otworzyć bitmapę z pliku ale tak by załadować ją do talbicy

bmp : array of array of integer;

oczywiscie chdozi mi tutaj o assginfile
blockready itp., ale tez nie odsylajcie mnie do jakis tepych objasnien naglowkow, bo wolalbym miec juz typowane rzeczy (czyli: type = theader_bmp = record :P), a tamten kod w asm nic mi nie daje bo nie znam asm =]

0

http://www.MyFileFormats.com - tam jest specyfikacja

0

Jeżeli już to proponuję: www.wotsit.org Ale w tym wypadku najlepszy opis jest w Helpie. A tu mniej więcej jak to powinno być dla 24-bitowych bitmap.

type
TLinia = array of TRGBTriple;
var
Naglowek: BITMAPFILEHEADER;
Info: BITMAPINFOHEADER;
Plik: file;
Bitmapa: array of TLinia;
Linia: TLinia;
Koniec, I: Word;
begin
AssignFile(Plik, 'c:test.bmp');
BlockRead(Plik, Naglowek, SizeOf(Naglowek));
BlockRead(Plik, Info, SizeOf(Info));
SetLength(Bitmapa, Info.biWidth, Info.biHeight);
SetLength(Linia, Info.biWidth);
for i := 0 to Info.biHeight -1 do
begin
BlockRead(Plik, Linia, SizeOf(Linia));
BlockRead(Plik, Koniec, 2); //Zczytuje 0, 0 z końca każdej lini
Bitmapa[i] := Linia;
end;
CloseFile(Plik);
end;

0

no dobra mamy juz cos z tym dry :P
ale jak to przeksztalcic do tablicy array of array of integer ?

bo nie znam nic o rgbtriple

dobra tagRGBTRIPLE packed record

rgbtBlue: Byte;
rgbtGreen: Byte;
rgbtRed: Byte;

end;

i jzu zrozumialem wszystko, no mzoe jeszcze musze sie troche poduczyc jak to wyciagnac ale mzoe cos z tego bedzie

=ee nie umiem jak:
opek : integer;
opek := bitmapa[numer lini][numer pixela od 0 do konca width];

jak to zrobic?

0

var
RGBT: TRGBTripple;
Opek: Integer;
{
RGBT := Bitmapa[Height-NrLini][NrPixelaWLini];
Opek := RGB(RGBT.R, RGBT.G, RGBT.B);
}

W Bitmapie linie są od końca zapisywane.

0

to ja od razu mpowiem
Bitmapa[i] := Linia; nie dziala

1 użytkowników online, w tym zalogowanych: 0, gości: 1