LittleBen hat folgendes geschrieben : |
Hallo zusammen,
mein neustes Problem sieht so aus, dass ich ein TGraphic verkleinern muss. Also so, dass der Speicherbedarf kleiner wird.
|
Also sollen Breite und Höhe der Grafik unverändert bleiben?
Auf jeden Fall leidet die Qualität.
LittleBen hat folgendes geschrieben : |
Das Hinderniss hierbei ist, dass das TGraphic ein TGraphic bleiben muss. Mit ImageEn habe ich zwar schon geschafft, das Bild zu verkleinern, aber danach bekomme ich zwangsläufig ein TBitmap (nicht transparent) zurück.
|
TBitmap ist auch ein Nachkomme von TGraphic.
Deine Bedingung ist also, die Transparenz soll erhalten bleibt.
LittleBen hat folgendes geschrieben : |
Die Bilder, die ich verkleinern möchte, werden aus dem Internet heruntergeladen, können also jedes beliebige Format haben.
|
Nach deinem Quelltext können das nur ganz bestimmte Formate sein, die dein Programm unterstützt.
LittleBen hat folgendes geschrieben : |
Hier ist mein bisheriger Code zum runterladen des Bildes, was dann anschließend als TGraphic zurück geliefert wird:
|
Eigentlich nicht relevant, da für das eigentliche Problem noch keine Zeile Code existiert.
Ich würde allerdings bei der Exception-Behandlung anders vorgehen.
Es gibt eine zentrale Stelle (Application.OnException) die alle Fehlermeldungen verarbeitet.
Statt die eigentliche Meldung der Exception zu ersetzen, würde ich die Fehlermeldung nur ergänzen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| except on E: Exception do begin FreeAndNil(Result); E.Message := 'Invalid image: ' + E.Message; raise; end; end; |
Zum eigentlichen Problem:
Such dir ein Grafikformat/Bibliothek das Skalieren mit Transparenz unterstützt.
z.B. Graphics32
Dann musst du dich nur noch um die Konvertierung in dieses Format kümmern.
Wahrscheinlich gibt es dafür auch schon fertige Funktionen.