| @@ -4920,7 +4920,7 @@ begin | |||||
| rid.Width := Width; | rid.Width := Width; | ||||
| rid.Height := Height; | rid.Height := Height; | ||||
| rid.Depth := CountSetBits(FormatDesc.Range.r or FormatDesc.Range.g or FormatDesc.Range.b or FormatDesc.Range.a); | |||||
| rid.Depth := CountSetBits(FormatDesc.RedMask or FormatDesc.GreenMask or FormatDesc.BlueMask or FormatDesc.AlphaMask); | |||||
| rid.BitOrder := riboBitsInOrder; | rid.BitOrder := riboBitsInOrder; | ||||
| rid.ByteOrder := riboLSBFirst; | rid.ByteOrder := riboLSBFirst; | ||||
| rid.LineOrder := riloTopToBottom; | rid.LineOrder := riloTopToBottom; | ||||
| @@ -5977,13 +5977,15 @@ procedure TglBitmap.SavePNG(const aStream: TStream); | |||||
| var | var | ||||
| png: TPortableNetworkGraphic; | png: TPortableNetworkGraphic; | ||||
| intf: TLazIntfImage; | intf: TLazIntfImage; | ||||
| raw: TRawImage; | |||||
| begin | begin | ||||
| png := TPortableNetworkGraphic.Create; | png := TPortableNetworkGraphic.Create; | ||||
| intf := TLazIntfImage.Create(0, 0); | intf := TLazIntfImage.Create(0, 0); | ||||
| try | try | ||||
| if not AssignToLazIntfImage(intf) then | if not AssignToLazIntfImage(intf) then | ||||
| raise EglBitmap.Create('unable to create LazIntfImage from glBitmap'); | raise EglBitmap.Create('unable to create LazIntfImage from glBitmap'); | ||||
| png.LoadFromIntfImage(intf); | |||||
| intf.GetRawImage(raw); | |||||
| png.LoadFromRawImage(raw, false); | |||||
| png.SaveToStream(aStream); | png.SaveToStream(aStream); | ||||
| finally | finally | ||||
| png.Free; | png.Free; | ||||
| @@ -6513,13 +6515,15 @@ procedure TglBitmap.SaveJPEG(const aStream: TStream); | |||||
| var | var | ||||
| jpeg: TJPEGImage; | jpeg: TJPEGImage; | ||||
| intf: TLazIntfImage; | intf: TLazIntfImage; | ||||
| raw: TRawImage; | |||||
| begin | begin | ||||
| jpeg := TJPEGImage.Create; | jpeg := TJPEGImage.Create; | ||||
| intf := TLazIntfImage.Create(0, 0); | intf := TLazIntfImage.Create(0, 0); | ||||
| try | try | ||||
| if not AssignToLazIntfImage(intf) then | if not AssignToLazIntfImage(intf) then | ||||
| raise EglBitmap.Create('unable to create LazIntfImage from glBitmap'); | raise EglBitmap.Create('unable to create LazIntfImage from glBitmap'); | ||||
| jpeg.LoadFromIntfImage(intf); | |||||
| intf.GetRawImage(raw); | |||||
| jpeg.LoadFromRawImage(raw, false); | |||||
| jpeg.SaveToStream(aStream); | jpeg.SaveToStream(aStream); | ||||
| finally | finally | ||||
| intf.Free; | intf.Free; | ||||
| @@ -8559,4 +8563,4 @@ finalization | |||||
| FreeAndNil(InitOpenGLCS); | FreeAndNil(InitOpenGLCS); | ||||
| {$ENDIF} | {$ENDIF} | ||||
| end. | |||||
| end. | |||||