Browse Source

* load JPEG direct over TLazIntfImage and TReadJPEG instead of TJPEGImage

master
Bergmann89 10 years ago
parent
commit
95537170b0
1 changed files with 10 additions and 16 deletions
  1. +10
    -16
      glBitmap.pas

+ 10
- 16
glBitmap.pas View File

@@ -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;



Loading…
Cancel
Save