![]() |
Re: ActiveX.Image -> Buffer --> TBitmap
Guten Morgen! Nach einer kleinen Korrektur funktioniert es... fast. Vielen Dank!
Delphi-Quellcode:
Nur leider stimmt die Palette nicht. Aus dem Grayscale wird ein lustige Ansammlung von Farben. ^^
var
bmp: TBitmap; pBuffer: Pointer; const ueye_ImgWidth = 1024; ueye_ImgHeight = 768; ueye_BufferSize = ueye_ImgWidth * ueye_ImgHeight * 1; procedure TF_Cam.Timer1Timer(Sender: TObject); begin GetMem(pBuffer, ueye_BufferSize); try uEyeCam1.CopyImage(Cardinal(pBuffer), ueye_BufferSize); bmp := TBitmap.Create; try bmp.Width := ueye_ImgWidth; bmp.Height := ueye_ImgHeight; bmp.PixelFormat := pf8Bit; Move(pBuffer^, bmp.Scanline[bmp.Height-1]^, ueye_BufferSize); BitBlt(F_Cam.Canvas.Handle, 0, 0, ueye_ImgWidth, ueye_ImgHeight, bmp.Canvas.Handle, 0, 0, SRCCOPY); finally bmp.Free; end; finally FreeMem(pBuffer); end; end; |
Re: ActiveX.Image -> Buffer --> TBitmap
|
Re: ActiveX.Image -> Buffer --> TBitmap
Liste der Anhänge anzeigen (Anzahl: 1)
Da beim JPEG Informationen verloren gehen hab ich das jetzt so gelöst:
Delphi-Quellcode:
Allerdings kommt dabei folgendes raus.
type
TLogPal = record lpal : TLogPalette; colorSpace : Array[0..255] of TPaletteEntry; end; var bmp: TBitmap; pBuffer: Pointer; pal : TLogPal; iCount : integer; const ueye_ImgWidth = 1024; ueye_ImgHeight = 768; ueye_BufferSize = ueye_ImgWidth * ueye_ImgHeight * 1; procedure TF_Cam.Timer1Timer(Sender: TObject); begin // Create a 256 gray-scale palette pal.lpal.palVersion:=$300; pal.lpal.palNumEntries := 256; for iCount := 0 to 255 do with pal.lpal.palPalEntry[iCount] do begin peRed := iCount; peGreen := iCount; peBlue := iCount; end; GetMem(pBuffer, ueye_BufferSize); try uEyeCam1.CopyImage(Cardinal(pBuffer), ueye_BufferSize); bmp := TBitmap.Create; try bmp.Width := ueye_ImgWidth; bmp.Height := ueye_ImgHeight; bmp.PixelFormat := pf8Bit; Move(pBuffer^, bmp.Scanline[bmp.Height-1]^, ueye_BufferSize); bmp.Palette := CreatePalette(pal.lpal); BitBlt(F_Cam.Canvas.Handle, 0, 0, ueye_ImgWidth, ueye_ImgHeight, bmp.Canvas.Handle, 0, 0, SRCCOPY); finally bmp.Free; end; finally FreeMem(pBuffer); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz