2015-09-24 42 views
1

有一個簡單的應用程序寫在拉撒路。當它試圖打開圖形文件時,它會得到「不兼容的BitsPerPixel」錯誤。操作系統:Debian。拉撒路:1.4.0。任何想法如何解決它?Lazarus位像素錯誤

ERROR in LCL: TGtk2WidgetSet.CreateBitmapFromRawImage Incompatible BitsPerPixel 

Creating gdb catchable error: 
$000000000050B225 line 720 of lazloggerbase.pas 
$00000000004BCBDE line 1414 of lclproc.pas 
$00000000004BAB0B line 859 of lclproc.pas 
$00000000005E38A6 line 417 of gtk2lclintf.inc 
$0000000000568A45 line 152 of include/lclintf.inc 
$00000000004DB208 line 3622 of intfgraphics.pas 
$000000000054A7BA line 554 of include/rasterimage.inc 
$000000000045FDC3 line 86 of unit1.pas 
$0000000000460258 line 144 of unit1.pas 
TApplication.HandleException Failed to create handles 
Stack trace: 
$00000000004DB22E line 3623 of intfgraphics.pas 
$000000000054A7BA line 554 of include/rasterimage.inc 
$000000000045FDC3 line 86 of unit1.pas 
$0000000000460258 line 144 of unit1.pas 
$00000000006346A8 line 2724 of include/control.inc 
$00000000006636E6 line 54 of include/buttoncontrol.inc 
$0000000000663FD6 line 169 of include/buttons.inc 
$00000000006635E9 line 20 of include/buttoncontrol.inc 
$000000000042E411 
$00000000006241C1 line 5341 of include/wincontrol.inc 
$000000000070B585 line 112 of lclmessageglue.pas 
$000000000071ADB2 line 2423 of gtk2wsstdctrls.pp 

代碼:

 procedure TForm1.ReadFromImage(var img: TRGBArray); 
     var px,py: integer; 
      row: pRGBTripleArray; 
      lazImage : TLazIntfImage; 
      rawImage: TRawImage; 
     begin 
      If OpenPictureDialog1.Execute then 
      begin 
      rawImage.Init;         
      rawImage.Description.Init_BPP24_B8G8R8_BIO_TTB(0,0); 
      rawImage.CreateData(false);       

      lazImage:=TLazIntfImage.Create(0,0);  
      lazImage.SetRawImage(rawImage);   
      lazImage.LoadFromFile(OpenPictureDialog1.FileName); 
      SetLength(img,lazImage.Width,lazImage.Height);  

      Image1.Picture.Bitmap.LoadFromIntfImage(lazImage); 
      lazImage.Free; 
      end; 
     end;   

xwininfo結果:

xwininfo: Window id: 0x1a0002d "RGB<->XYZ<->Lab" 
Absolute upper-left X: 642 
Absolute upper-left Y: 37 
Relative upper-left X: 2 
Relative upper-left Y: 0 
Width: 636 
Height: 1041 
Depth: 24 
Visual: 0x20 
Visual Class: TrueColor 
Border width: 0 
Class: InputOutput 
Colormap: 0x22 (installed) 
Bit Gravity State: NorthWestGravity 
Window Gravity State: NorthWestGravity 
Backing Store State: NotUseful 
Save Under State: no 
Map State: IsViewable 
Override Redirect State: no 
Corners: +642+37 -642+37 -642-2 +642-2 
-geometry 636x1041+640-0 

回答

0

不知道爲什麼,考慮到24位窗口的深度,但切換到Init_BPP32_B8G8R8A8_M1_BIO_TTB();解決了這個問題。