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 uses
Math, syncobjs, typinfo 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 type
{$IFNDEF fpc} {$IFNDEF fpc}
@@ -6348,6 +6349,7 @@ const
var var
jpeg: TJPEGImage; jpeg: TJPEGImage;
intf: TLazIntfImage; intf: TLazIntfImage;
reader: TFPReaderJPEG;
StreamPos: Int64; StreamPos: Int64;
magic: String[MAGIC_LEN]; magic: String[MAGIC_LEN];
begin begin
@@ -6362,28 +6364,20 @@ begin
exit; exit;
end; end;


jpeg := TJPEGImage.Create;
reader := TFPReaderJPEG.Create;
intf := TLazIntfImage.Create(0, 0);
try try 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 except
result := false; result := false;
aStream.Position := StreamPos; aStream.Position := StreamPos;
exit; exit;
end; end;
finally finally
jpeg.Free;
reader.Free;
intf.Free;
end; end;
end; end;




Loading…
Cancel
Save