Tableau de bytes et canvas d'un bitmap
Bonjour,
Dans un fichier bitmap je suppose qu'il existe un tableau de bytes après l'entête du fichier.(sans doute le canvas)
Pour une question de rapidité peut-on le récupérer dans un tableau de bytes ou de Tcolor sans être obligé de de passer par canvas.pixels[x,y] ?
Si Oui comment ?
Un exemple de code serait bienvenu
Merci à tous
Le code suivant ne fonctionne pas
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| procedure TForm4.FormCreate(Sender: TObject);
type
TPixels = array[0..511, 0..511] of TColor;
var
bmp :TBitmap;
P : PByteArray;
w,h : Integer;
begin
bmp := TBitmap.Create;
bmp.PixelFormat := pf32Bit;
Bmp.LoadFromFile('c:\1.bmp');
for h := 0 to bmp.Height-1 do
begin
P := Bmp.ScanLine[h];
for w := 0 to bmp.Width-1 do
P[w]:= h;
end;
Image1.Picture.Assign(bmp);
bmp.Free;
end; |
L'image se trouve divisée en trois parties deux partie à gauche en dégrdé noir au blanc et une partie à droite correspondante à une portion de l'image originale
Où est l'erreur ?
Un PByteArray qui semble fonctionner
avec le code suivant l'image affichée est correcte :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| procedure TForm4.FormCreate(Sender: TObject);
var
P : PByteArray;
bmp :TBitmap;
w,h : Integer;
begin
bmp := TBitmap.Create;
bmp.PixelFormat := pf24Bit;
Bmp.LoadFromFile('c:\1.bmp');
for h := 0 to bmp.Height-1 do
begin
P := Bmp.ScanLine[h];
for w := 0 to bmp.Width-1 do
P[h]:= w;
end;
Image1.Picture.Assign(bmp);
bmp.Free;
end; |
Si P est une variable générale, connaissant bmp.Width et bmp.Height Comment recréer l'image à partir de P ?
Un exemple code serait bien venu