Einzelnen Beitrag anzeigen

BastiFantasti

Registriert seit: 5. Nov 2014
Ort: Baden Württemberg
133 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Delphi 12, skia, SVG > PNG, (SpeedButton)

  Alt 13. Mär 2024, 09:12
In Wahrheit suche ich nur was, was mir aus einer SVG Datei zur Laufzeit ein sauberes PNG mit Transparenzen liefert in bestimmter Größe und alternativ ein Bitmap ohne Antialiasing, damit keine Übergeänge an den Rändern entstehen.
Ich verwende dafür die Image32 Library von Angus Johnson verfügbar auf GitHub: https://github.com/AngusJohnson/Image32.

Der notwendige Code zum Erzeugen eines PNG aus SVG ist da denkbar simpel:
Delphi-Quellcode:
    var img := TImage32.Create(ASize, ASize);
    try
      img.LoadFromFile(ASourceFileName);
      img.SaveToFile(ATargetFileName);
    finally
      img.Free;
    end;
Ich habe das mal mit der Image32 library versucht.
Allerdings werden bei mir keine Bilder geschrieben und auch kein Fehler ausgegeben.

Ich habe es mit LoadFromFile als auch mit LoadFromStream versucht.

Bei der LoadFromFile Methode exportiere ich das SVG in eine temporäre Datei (tmpfile) und lasse das dann wieder laden.
Die Image32 Bibliothek ist mit dem "SVGIconImageList-12-4.1.1" mitinstalliert worden.


Code:
uses
  img32

var
  imgsize,
  imgname: string;
  data: TStringlist;
  isize : integer;
  img : TImage32;
begin
  for imgSize in data do
  begin
    isize := strtoint(imgsize);
    imgname := TPath.Combine(fodlgOutputFile.FileName, itm+'_'+imgsize+'x'+imgsize+'.png');
    img := TImage32.Create(isize,isize);
    try
      img.LoadFromFile(tmpfile);
      img.SaveToFile(imgname);
    finally
      img.Free;
    end;
  end;
Viele Grüße
Bastian
  Mit Zitat antworten Zitat