From: Bergmann89 Date: Sun, 9 Feb 2014 12:30:58 +0000 (+0100) Subject: * load JPEG direct over TLazIntfImage and TReadJPEG instead of TJPEGImage X-Git-Tag: v3.0.1~3 X-Git-Url: https://git.delphigl.com/?a=commitdiff_plain;h=95537170b0fcafff3246a1c03d6eb1b1449221cd;p=glBitmap.git * load JPEG direct over TLazIntfImage and TReadJPEG instead of TJPEGImage --- diff --git a/glBitmap.pas b/glBitmap.pas index ea47607..fdeaae1 100644 --- a/glBitmap.pas +++ b/glBitmap.pas @@ -1230,7 +1230,8 @@ implementation uses Math, syncobjs, typinfo - {$IFDEF GLB_DELPHI}, Types{$ENDIF}; + {$IFDEF GLB_DELPHI}, Types{$ENDIF} + {$IF DEFINED(GLB_SUPPORT_JPEG_READ) AND DEFINED(GLB_LAZ_JPEG)}, FPReadJPEG{$IFEND}; type {$IFNDEF fpc} @@ -6348,6 +6349,7 @@ const var jpeg: TJPEGImage; intf: TLazIntfImage; + reader: TFPReaderJPEG; StreamPos: Int64; magic: String[MAGIC_LEN]; begin @@ -6362,28 +6364,20 @@ begin exit; end; - jpeg := TJPEGImage.Create; + reader := TFPReaderJPEG.Create; + intf := TLazIntfImage.Create(0, 0); try try - jpeg.LoadFromStream(aStream); - intf := TLazIntfImage.Create(0, 0); - try try - intf.LoadFromBitmap(jpeg.BitmapHandle, jpeg.MaskHandle); - AssignFromLazIntfImage(intf); - except - result := false; - aStream.Position := StreamPos; - exit; - end; - finally - intf.Free; - end; + intf.DataDescription := GetDescriptionFromDevice(0, 0, 0); + reader.ImageRead(aStream, intf); + AssignFromLazIntfImage(intf); except result := false; aStream.Position := StreamPos; exit; end; finally - jpeg.Free; + reader.Free; + intf.Free; end; end;