Bonsoir,
J'obtiens une différence à l'exécution du même code source sous Lazarus Win7 32 bits et CodeTyphon (Lazarus 64) Ubuntu.
J'obtiens sous Win7 l'affichage de l'image couleur attendue, mais sous Ubuntu une image reconnaissable, grise, avec des rayures colorées verticales...
Pour éliminer certaines causes, j'ai sauvé dans un fichier le tableau RGB (PBA dans le code ci-dessous) que je passe en ScanLine à un TLazIntfImage, copié vers un BitMap qui est assigné à un TImage pour l'affichage (ouf !)
Et le fichier correct sous Win7 donne la même image grise sous Ubuntu que celle obtenue par le traitement normal !
Je ne sais plus où donner de la tête !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 tms:=TMemoryStream.Create; tms.Write(PBA[0], FWidth*FHeight*3); // PBA = TByteArray : tableau de RGB style BitMap tms.SaveToFile('testbmp.bin'); tms.Clear; tms.LoadFromFile('testbmp.bin'); FillChar(PBA[0], FWidth*FHeight*3, 0); tms.Read(PBA[0], FWidth*FHeight*3); tms.Free; // passage au Bitmap de travail with ScanlineImage // TLazIntfImage do begin BeginUpdate; for yy:=0 to FHeight-1 // PRT = TRGBTripleArray absolute PBA do Move( PRT[yy*FWidth], TPRT(GetDataLineStart(yy))[0], ScanlineSize ); EndUpdate; end; // puis à celui interne à passer FBitmap.LoadFromIntfImage(ScanlineImage); // puis Image1.Picture.Assign(FBitmap);
Merci pour vos pistes.
Partager