Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
3.932 Beiträge
 
Delphi 12 Athens
 
#4

AW: [Firemonkey] Canvas als PNG mit Transparenz speichern

  Alt 12. Apr 2016, 06:15
Wenn du ein Bmp hast könntest du damit Speichern
Delphi-Quellcode:
procedure S4Bmp_ToStream( bmpSrc : TBitmap;
                          strmDst : TStream;
                          sExt : String;
                          iQuality : Integer);
var
  Surf : TBitmapSurface;
  vBitMapData : TBitmapData;
  saveParams : TBitmapCodecSaveParams;

begin
  Surf := TBitmapSurface.Create;

  // lock and get the bitmap pixels
  if bmpSrc.Map(TMapAccess.Read, vBitMapData) then
  begin

      try
        Surf.Assign(bmpSrc);

        saveparams.Quality := iQuality; // 85;

        if not TBitmapCodecManager.SaveToStream(strmDst, Surf, sExt, @saveParams) then //'.jpg') then
            raise EBitmapSavingFailed.Create(
                  'Error saving Bitmap to ' + sExt);
    // raise EBitmapSavingFailed.Create(SBitmapSavingFailed);
      finally
        Surf.Free;
      end;


      bmpSrc.Unmap(vBitMapData); // unlock the bitmap

  end;

end;


// Aufruf mit Quality in %
S4Bmp_ToStream( bmpSrc, FileStream_als_Beispiel, '.png', 85);
Info: Den äussere Scope mit Bitmap.Map()... könnte man wohl auch weglassen,
ich hatte das noch von einem Test mit drin, aber ich denke das schadet auch nicht wenn es drin bleibt.


Eigentlich sollte das Canvas-Bitmap die Transparenz richtig drinhaben, müsstest du mal Testen.

Rollo

Geändert von Rollo62 (12. Apr 2016 um 06:18 Uhr)
  Mit Zitat antworten Zitat