AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von looseleaf · begonnen am 21. Nov 2023 · letzter Beitrag vom 13. Mär 2024
Antwort Antwort
looseleaf

Registriert seit: 25. Mai 2011
69 Beiträge
 
#1

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

  Alt 22. Nov 2023, 13:25
Hm, nicht, wenn es sich vermeiden lässt. Andererseits ist das auch ein open source Projekt. 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.

Hast du Erfahrung damit? Kann man die Bilder zur Laufzeit so skalieren, dass sie in TSpeedButtons sauber aussehen?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.651 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 22. Nov 2023, 13:37
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
BastiFantasti

Registriert seit: 5. Nov 2014
Ort: Baden Württemberg
136 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 13. Mär 2024, 08: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
Bastian
  Mit Zitat antworten Zitat
BastiFantasti

Registriert seit: 5. Nov 2014
Ort: Baden Württemberg
136 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 13. Mär 2024, 08:26
scheinbar kann er den Bildertyp von der SVG Grafik nicht ermitteln.

in der in LoadFromFile > TImage32.LoadFromStream -> GetImageFormatClass Funktion ist die ImageFormatClassList leer.
Deswegen findet er keinen passenden Bildtyp (siehe Anhang)...

ich recherchiere weiter.
Angehängte Grafiken
Dateityp: png 2024-03-13 09_24_13-Clipboard.png (11,4 KB, 13x aufgerufen)
Bastian
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 13. Mär 2024, 08:55
Vielleicht musst Du explizit die SVG-Unit mit angeben.
https://angusj.com/image32/Docs/Unit....SVG/_Body.htm
  Mit Zitat antworten Zitat
BastiFantasti

Registriert seit: 5. Nov 2014
Ort: Baden Württemberg
136 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 13. Mär 2024, 12:59
Super, vielen Dank - so hat es geklappt.

Diese Includes werden benötigt für die SVG -> PNG Konvertierung:

Code:
uses
  img32,
  img32.Fmt.PNG,
  img32.Fmt.SVG
  ;
Bastian
  Mit Zitat antworten Zitat
QuickAndDirty
Online

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.007 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 23. Nov 2023, 16:14
Hm, nicht, wenn es sich vermeiden lässt. Andererseits ist das auch ein open source Projekt. 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.

Hast du Erfahrung damit? Kann man die Bilder zur Laufzeit so skalieren, dass sie in TSpeedButtons sauber aussehen?
ich habe die in einem Testprojekt benutzt und werde meine aktuellen FMX imagelisten durch die SVG imagelisten aus dieser bibliothek ersetzen.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz