Delphi-PRAXiS
Seite 6 von 6   « Erste     456   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   PNG in TImage falsch dargestellt (https://www.delphipraxis.net/204002-png-timage-falsch-dargestellt.html)

Redeemer 27. Apr 2020 17:09

AW: PNG in TImage falsch dargestellt
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von tumo (Beitrag 1462970)
Jetzt hat das Problem einen Workaround. Warum Delphi überhaupt eine Unterscheidung zwischen Partial- und BitTransparency macht, bleibt mir ein Rätsel. Hat das einen entscheidenden Vorteil?[/DELPHI]

ptmBit ist deutlich einfacher (performanter) zu zeichnen als ptmPartial, wo man Alpha Blending (Porter-Duff OVER) durchführen muss.

Unterstützt dein PNGDelphi ohne meinen Algorithmus 4-Bit+Alpha und 1-Bit+Alpha? Ich hab mal zwei Beispiele angehängt.

TurboMagic 27. Apr 2020 19:25

AW: PNG in TImage falsch dargestellt
 
Zitat:

Zitat von Redeemer (Beitrag 1462972)
Zitat:

Zitat von tumo (Beitrag 1462970)
Jetzt hat das Problem einen Workaround. Warum Delphi überhaupt eine Unterscheidung zwischen Partial- und BitTransparency macht, bleibt mir ein Rätsel. Hat das einen entscheidenden Vorteil?[/DELPHI]

ptmBit ist deutlich einfacher (performanter) zu zeichnen als ptmPartial, wo man Alpha Blending (Porter-Duff OVER) durchführen muss.

Unterstützt dein PNGDelphi ohne meinen Algorithmus 4-Bit+Alpha und 1-Bit+Alpha? Ich hab mal zwei Beispiele angehängt.

Fehlten da die Anhänge?
Bei mir war nur der Rahmen um den Bwereich herum da, aber kein Inhalt.

Redeemer 27. Apr 2020 19:43

AW: PNG in TImage falsch dargestellt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir sind da Bilder. Was für einen Browser benutzt du? Ich habe Firefox 75.
Hab es dir aber nochmal aus 7z angehängt.

tumo 28. Apr 2020 14:42

AW: PNG in TImage falsch dargestellt
 
Zitat:

Zitat von Redeemer (Beitrag 1462972)
ptmBit ist deutlich einfacher (performanter) zu zeichnen als ptmPartial, wo man Alpha Blending (Porter-Duff OVER) durchführen muss.

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.

tumo 28. Apr 2020 19:01

AW: PNG in TImage falsch dargestellt
 
Liste der Anhänge anzeigen (Anzahl: 1)
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 (oder 0011 0010). Abgesehen davon, dass die damit korrespondierenden Pixel die Farbreihenfolge (nach Chroma) von 01 01 10 11 haben müssten (was in den Scanline-Daten gleich garnicht stehen kann, aufgrund der Transparenz von 00 und 01 aber nicht auffällt), scheint etwas an ebendiesem Punkt falsch zu laufen.

Redeemer 28. Apr 2020 21:21

AW: PNG in TImage falsch dargestellt
 
Klappt bei mir in Delphi 2009 ohne Probleme mit meiner Methode. Bitdepth ist zwar 4, was scheinbar falsch ist, die Daten liegen aber auch so im Speicher, als ob es 4 wäre (bei mir und bei dir!).
Was ist Bitdepth bei dir? Falls 2, was passiert, wenn du BitDepth (also die Variable in meiner Methode) direkt nach dem Setzen auf 4 setzt?

tumo 29. Apr 2020 08:16

AW: PNG in TImage falsch dargestellt
 
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?
Delphi-Quellcode:
BitDepth := PNG.Header.BitDepth;
if BitDepth < 4 then BitDepth := 4;
EDIT: Wenn man die png.Pixels Property nutzt, funktioniert es auch nicht. Es wird immer kurioser, fast, als hätte sich diese Lib nie wieder jemand angeschaut oder überprüft, dass sie auch das kann, was sie anbietet.

Redeemer 29. Apr 2020 08:42

AW: PNG in TImage falsch dargestellt
 
Zitat:

Zitat von tumo (Beitrag 1463093)
Was ist Dein Gedanke?
Delphi-Quellcode:
BitDepth := PNG.Header.BitDepth;
if BitDepth < 4 then BitDepth := 4;

Nein:
Delphi-Quellcode:
BitDepth := PNG.Header.BitDepth;
if BitDepth = 2 then BitDepth := 4;
Oder hast du Probleme mit simple3.png, dem gelb-pinken Bild aus meinem Anhang? Dein Code würde auch da das Verhalten ändern, denn das hat 1BPP.

tumo 29. Apr 2020 14:56

AW: PNG in TImage falsch dargestellt
 
Ach ja. Geht jetzt. Trotzdem komisch das ganze...

Danke Dir nochmal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:00 Uhr.
Seite 6 von 6   « Erste     456   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz