-
Forum: Object-Pascal / Delphi-Language
by tumo,
29. Apr 2020
Ach ja. Geht jetzt. Trotzdem komisch das ganze...
Danke Dir nochmal.
-
Forum: Object-Pascal / Delphi-Language
by tumo,
29. Apr 2020
Also beim Auslesen des Headers bekomme ich: Indexed 2bit. Ironischerweise wird es ohne deinen Code korrekt dargestellt. Beim setzen auf 4bit funktioniert es auch korrekt. So langsam frage ich mich, was in der pngimage-Library eigentlich nicht fehlerhaft ist :D.
Was ist Dein Gedanke?
BitDepth := PNG.Header.BitDepth;
if BitDepth < 4 then BitDepth := 4;
EDIT: Wenn man die png.Pixels...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
28. Apr 2020
Ich muss leider noch mal stören.
@Redeemer
Dein Code hat ein Problem mit 2bit Palettenbildern. Beim drüberschauen ist mir jedoch kein Fehler aufgefallen. 8bit und 4bit geht dafür aber super :)
Falls es hilfreich ist, in deinem Code scheinen tatsächlich keine Fehler zu sein, die Daten von der Source-Scanline sind falsch(?). Bei meinem Testbild in Zeile y=4 hat er für x2=1 den Scanline-Wert 50...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
28. Apr 2020
Stimmt.
Aber auch nur, wenn es korrekt geht :P.
Was deine Bilder angeht, mein Delphi (bzw. mein pngimage) kann die problemlos darstellen. Ist wohl wirklich nur bei BitTransparency.
-
Forum: Object-Pascal / Delphi-Language
by tumo,
27. Apr 2020
@Rolf Frei
Ach ja. Das ist im Eifer des Gefechtes etwas in Vergessenheit geraten. Hab es gerade mal probiert, ändert leider nichts an der Situation, besagte PNG wird mit schwarzem Hintergrund dargestellt :/.
Hier mein Quellcode:
png := TPNGImage.Create;
png.LoadFromFile(Path);
bmp := TBitmap.Create;
bmp.Assign(png); // <-- TPNGImage AssignTo() ist modifiziert. Es fehlen das...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
26. Apr 2020
Gibt es da irgend einen Trick? Mein Ansatz wäre jetzt das pixelweise Parsen in ein neues TPNGObject, bin mir aber nicht sicher, ob das nicht noch effizienter geht.
Das umgeht dann ja aber nur das Problem. Mit anderen Worten, ich muss einen Edgecase für ebendiese Problembilder machen. Naja, ich schätze mal, das ist der sinnvollste Weg für mich, manchmal kann man eben nicht alles haben.
Wäre...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
25. Apr 2020
@Medium
Ich wüsste jetzt nicht, wo man den Vergrößerungs-Algorithmus einstellen kann. Tatsächlich macht er das schon mit NearestNeighbour (oder etwas, was verdammt danach aussieht), was auch das ist, was ich will. Verfolgt man die Draw()-Methode von PNGImage landet man mit BitTransparency früher oder später in einer Prozedur mit dem schönen Namen "DrawTransparentBitmap". Da drin wird mit...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
24. Apr 2020
Nun, der Fehler tritt offenbar auch bei BitTransparency auf. Ich nutze ebenfalls die von Delphi mitgelieferte pngimage-Lib.
Kannst du denn die Blume in Stretch=true und Proportional=true korrekt darstellen lassen?
-
Forum: Object-Pascal / Delphi-Language
by tumo,
23. Apr 2020
Das wäre PNG 4 (Das mit der "Blume"). Dort bekomme ich sowohl zur Design-Zeit, als auch mit LoadFromStream und LoadFromFile diese schwarzen Ränder. Meine pngimage Library Version ist übrigens 1.564 (Was offenbar die aktuellste ist). Hast du auch Stretch=true gesetzt (und optional auch Proportional=true)? Ich nutze Delphi 10.3.3 Community und der Fehler tritt wie auf Kommando auf. Warum nur ich...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
23. Apr 2020
Das wusste ich nicht.
Dann hier nochmal als Zip.
-
Forum: Object-Pascal / Delphi-Language
by tumo,
22. Apr 2020
Ok.
Hier sind sie :)
-
Forum: Object-Pascal / Delphi-Language
by tumo,
22. Apr 2020
Okay, ich habe noch ein wenig weiter probiert:
Beim Auslesen der Header-Daten ist mir aufgefallen, dass ich folgende PNGs im Testset habe:
PNG 1: RGBA (Mode 6) ; 8bit/ch -> 32bit/px ; Transparenz-Modus: Partial (Nur Binärer Alpha-Channel)
PNG 2: RGB (Mode 2) ; 8bit/ch -> 24bit/px ; Transparenz-Modus: None
PNG 3: Palette (Mode 3) ; 8bit/ch -> 8bit/px ; Transparenz-Modus: None
PNG 4: Palette...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
21. Apr 2020
Nach weiterem überlegen, probieren und googlen habe ich "herausgefunden", dass der Anzeigefehler nur auftritt, wenn die PNG im ColorMode 3 (Paletten-Modus) geladen wird. @Redeemer hatte also den richtigen Riecher (oder womöglich schon eine Lösung?). Warum genau dadurch Ränder schwarz angezeigt werden, wo die Pixeldaten eig. richtig sind, bleibt mir aber ein Rätsel. Mit der Graphics32 Library habe...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
15. Apr 2020
@Redeemer
Das war mir jetzt auch klar. Da ich aber alle PNGs einheitlich abgespeichert habe, vermute ich mal, entweder sind alle Pallettenbilder oder keins. Wenn dem nicht so ist, verstehe ich den Algorithmus von Paint.net nicht :/
@Medium
Perfekt, damit funktioniert es. Warum eine Zuweisung oder ein Assign nicht funktioniert, bleibt mir zwar ein Rätsel, aber das ist ja nicht so wichtig.
...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
14. Apr 2020
Ah.
Nun, nicht das ich wüsste.
-
Forum: Object-Pascal / Delphi-Language
by tumo,
14. Apr 2020
Danke für die schnellen Antworten.
@Medium
Habe mir die graphics32 mal angeschaut. Nach fast einer halben Stunde Harreraufen mit den Delphi Settings ging es dann endlich. Es tut, was es muss, aber nicht so richtig was es soll. Nicht falsch verstehen, meine Bitmaps werden bildschön, skaliert und mit Transparenz angezeigt, aber die eigentliche Zuweisung der Bitmaps ist alles andere als...
-
Forum: Object-Pascal / Delphi-Language
by tumo,
14. Apr 2020
Hallo,
ich habe ein kleines Programm, was mir Texturen auflistet und diese nach Bedarf anzeigt. Die Texturen sind als PNG gespeichert und werden (dank PNGImage) auch problemlos von Delphi geladen. Die Texturen sind fast immer 32x32 px groß und damit ich diese auf einem FHD Bildschirm auch ordentlich beurteilen kann, dachte ich, ich stelle sie ein wenig größer dar. TImage war von dieser Idee...