Mam coś takiego:
var
inBuff, outBuff: PByte;
Width: Height, nStride: Integer;
begin
Width:= 1920;
Height:= 1200;
nStride:= Width * 3;
GetMem(inBuff, nStride * Height);
// tutaj wrzucam do inBuff bitmapę bez nagłówka
// tu chcę ją obrócić
// i zapisać w innym formacie
FreeMem(inBuff);// wczytana bitmapa
FreeMem(outBuff);// obrócona bitmapa
end;
Do inBuff za pomocą TMemoryStream wrzucam bitmapę 24bitową bez początkowego 54-bitowego nagłówka.
Problem jest taki że ta bitmapa jest do góry nogami i po konwersji do innego formatu zapisuje się do góry nogami.
Jak obrócić bitmapę w inBuff?
Myślałam o tym aby pobrać cały wiersz (albo początkowy adres) i wklepywać to do outBuff we właściwej kolejności. Niestety nie idzie mi z tymi PByte. Rozumiem, że to rodzaj tablicy bajtów ale nie potrafię się dobrać do poszczególnych bajtów obrazu. Wywnioskowałam że dane zapisane w inBuff to kolejne bajty kolorów (po 3 na piksel) zapisane jednym ciągiem (BGR,BGR,BGR,BGR, itp.) jak w tablicy jednowymiarowej, bez rozróżnienia które bajty są w którym wierszu.
Jakieś wskazówki? Podpowiedzi jak ruszyć z typem PByte?