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