AGB  ·  Datenschutz  ·  Impressum  







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

PNG in TImage falsch dargestellt

Ein Thema von tumo · begonnen am 14. Apr 2020 · letzter Beitrag vom 29. Apr 2020
Antwort Antwort
tumo

Registriert seit: 28. Apr 2014
46 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: PNG in TImage falsch dargestellt

  Alt 22. Apr 2020, 18:16
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 (Mode 3) ; 8bit/ch -> 8bit/px ; Transparenz-Modus: Bit
PNG 5: Palette (Mode 3) ; 4bit/ch -> 4bit/px ; Transparenz-Modus: None

Zur Darstellung habe ich einige Codeschnipsel gebastelt:
Code 1:
Delphi-Quellcode:

Image.Picture.LoadFromStream(AStream);
Code 2:
Delphi-Quellcode:
png := TPNGImage.Create;
png.LoadFromStream(AStream);
Image.Picture.Graphic := png;
Code 3:
Delphi-Quellcode:
png := TPNGImage.Create;
png.LoadFromStream(AStream);
bmp := TBitmap.Create;
bmp.Assign(png);
Image.Picture.Graphic := bmp;
Code 4:
Delphi-Quellcode:
png := TPNGImage.Create;
png.LoadFromStream(AStream);
bmp := TBitmap.Create;
bmp.Assign(png);
Image.Picture.Graphic := bmp;
Image.Transparent := png.TransparencyMode = ptmBit
Daraus habe ich diese Tabelle kreiert:
 Code 1 Code 2 Code 3 Code 4
PNG 1 Ok Ok Ok Ok
PNG 2 Ok Ok Ok Ok
PNG 3 Ok Ok Ok Ok
PNG 4 Schwarze Outlines (Siehe OP) Schwarze Outlines (Siehe OP) Tranzparenz wird schwarz dargestellt Ok, Leichter Bildversatz im Vergleich zu PNG<>4
PNG 5 Ok Ok Ok Ok

Es wird deutlich, dass die pngimage Library von Delphi Probleme mit dem Darstellen von BitAlpha PNGs hat. Wie bereits gesagt, die Pixeldaten selbst geben beim Zugriff über png.Pixels aber auch bmp.Pixels die korrekten Farbdaten an. Deswegen ist meine Vermutung, dass im TPNGImage.Draw ein Fehler passiert, vllt in Kombination mit dem Stretch? pngimage hat einen extra AlphaBit-Case in seiner Draw-Funktion. Da hier aber hauptsächlich mit Windows-Funktionen hantiert wird, kann ich ab diesem Punkt nicht wirklich weiter ermitteln, besonders, da ich mir nicht sicher sein kann, dass dort tatsächlich der Fehler liegt.
Ich wollte mal erfahren, ob Ihr den Fehler reproduzieren könnt?
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.119 Beiträge
 
Delphi 2009 Professional
 
#2

AW: PNG in TImage falsch dargestellt

  Alt 22. Apr 2020, 18:41
Lad mal die PNGs hoch.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
tumo

Registriert seit: 28. Apr 2014
46 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: PNG in TImage falsch dargestellt

  Alt 22. Apr 2020, 18:50
Ok.
Hier sind sie
Angehängte Grafiken
Dateityp: png PNG 5.png (536 Bytes, 71x aufgerufen)
Dateityp: png PNG 4.png (1,6 KB, 71x aufgerufen)
Dateityp: png PNG 3.png (1,4 KB, 67x aufgerufen)
Dateityp: png PNG 2.png (1,6 KB, 67x aufgerufen)
Dateityp: png PNG 1.png (1,3 KB, 72x aufgerufen)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.119 Beiträge
 
Delphi 2009 Professional
 
#4

AW: PNG in TImage falsch dargestellt

  Alt 23. Apr 2020, 09:14
Kriege das nicht reproduziert mit Delphi 10.3... Habe LoadFromFile probiert und Laden zur Entwurfszeit. Kein Fehler.

Spannend wird es eh erst bei Palettenbildern mit Alpha-Kanal.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
tumo

Registriert seit: 28. Apr 2014
46 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: PNG in TImage falsch dargestellt

  Alt 23. Apr 2020, 12:22
Kriege das nicht reproduziert mit Delphi 10.3... Habe LoadFromFile probiert und Laden zur Entwurfszeit. Kein Fehler.
Spannend wird es eh erst bei Palettenbildern mit Alpha-Kanal.
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 damit gepeinigt werden sollte ist mir ein Rätsel

Geändert von tumo (23. Apr 2020 um 12:29 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.119 Beiträge
 
Delphi 2009 Professional
 
#6

AW: PNG in TImage falsch dargestellt

  Alt 23. Apr 2020, 19:11
Kriege das nicht reproduziert mit Delphi 10.3... Habe LoadFromFile probiert und Laden zur Entwurfszeit. Kein Fehler.
Spannend wird es eh erst bei Palettenbildern mit Alpha-Kanal.
Das wäre PNG 4 (Das mit der "Blume").
Die Blume hat keinen Alphakanal sondern eine transparente Farbe.
Ich benutze übrigens das bei Delphi 10.3 enthaltene pngimage.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
tumo

Registriert seit: 28. Apr 2014
46 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: PNG in TImage falsch dargestellt

  Alt 24. Apr 2020, 13:20
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?
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
984 Beiträge
 
Delphi 6 Professional
 
#8

AW: PNG in TImage falsch dargestellt

  Alt 23. Apr 2020, 10:40
Hmm..

Ok.
Hier sind sie
Damit die Bilder im Original angehängt werden können, musst Du diese in nen ZIP packen..

Die Website recodiert die Bilder sonst beim Hochladen
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
tumo

Registriert seit: 28. Apr 2014
46 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: PNG in TImage falsch dargestellt

  Alt 23. Apr 2020, 10:52
Das wusste ich nicht.
Dann hier nochmal als Zip.
Angehängte Dateien
Dateityp: zip PNGs.zip (5,7 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.119 Beiträge
 
Delphi 2009 Professional
 
#10

AW: PNG in TImage falsch dargestellt

  Alt 23. Apr 2020, 11:20
Hmm..

Ok.
Hier sind sie
Damit die Bilder im Original angehängt werden können, musst Du diese in nen ZIP packen..

Die Website recodiert die Bilder sonst beim Hochladen
Nein.
Janni
2005 PE, 2009 PA, XE2 PA
  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 02:30 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