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
49 Beiträge
 
Delphi 10.3 Rio
 
#1

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.134 Beiträge
 
Delphi 2009 Professional
 
#2

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
49 Beiträge
 
Delphi 10.3 Rio
 
#3

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
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: PNG in TImage falsch dargestellt

  Alt 24. Apr 2020, 16:52
Aha! Nur bei 1-Bit bzw. transparenter Farbe (welche artverwandt sind). Das lässt darauf schließen, dass die verwendete Resampling-Methode den "Alphakanal" für diese falsch behandelt. Ich habe das jetzt nicht mehr ganz im Kopf: Was für ein Filter wird denn beim Vergrößern benutzt? Bei Nutzung von Nearest-Neighbour würde ich fast vermuten, dass es kein Problem geben sollte. (Sieht natürlich auch nicht so schick aus.) Aber das wäre die Richtung, in die ich weiter forschen würde.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#5

AW: PNG in TImage falsch dargestellt

  Alt 24. Apr 2020, 17:28
Ich habe jetzt nicht alles gelesen..
Aber was für eine Qualität bzw. Ansicht erwartest du bei einem Indizierten *.png!
Das kann nur inkorrekt dargestellt werden.

Ändere es doch einfach mal von 8 auf 32Bit.
Ich behaupte jetzt einfach mal das TImage mit indizierten *.png's nicht klar kommt.

Geändert von venice2 (24. Apr 2020 um 17:34 Uhr)
  Mit Zitat antworten Zitat
Redeemer

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

AW: PNG in TImage falsch dargestellt

  Alt 25. Apr 2020, 11:24
Ich habe jetzt nicht alles gelesen..
Aber was für eine Qualität bzw. Ansicht erwartest du bei einem Indizierten *.png!
Das kann nur inkorrekt dargestellt werden.
Nein.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
tumo

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

AW: PNG in TImage falsch dargestellt

  Alt 25. Apr 2020, 16:10
@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 Windows-Blt-Befehlen weiter gearbeitet. Ab da verstehe ich nicht mehr wirklich viel :/.

@venice2
Ich erwarte, dass die Pixeldaten korrekt dargestellt werden, auch in vergrösserter Version. Es gibt noch einen Unterschied zwischen hässlich und inkorrekt darstellen. Es "einfach" mal von 8bit auf 32bit zu ändern (1.) geht mit Palettenbildern nicht, (2.) lässt TPNGImage á la BitDepth=32bit nicht zu, (3.) ist in meinem Fall nicht möglich, da die Bilder so gegeben sind. Die Behauptung ist zwar ganz nett, aber eben nicht richtig bzw. offensichtlich. TPNGImage hat einen extra Case für BitTransparency (die nur in Palettenbildern vorkommt) in der Draw()-Methode. Andere, nicht-transparente, indizierte PNGs kann es ja problemlos.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#8

AW: PNG in TImage falsch dargestellt

  Alt 25. Apr 2020, 18:50
Zitat:
aber eben nicht richtig bzw. offensichtlich. TPNGImage hat
Ihr solltet euch mal langsam einigen.
Was denn nu TImage oder TPNGImage

Zitat:
(1.) geht mit Palettenbildern nicht
geht nicht gibt es nicht.

Es ist ein einfaches dein Paletten Bild im Speicher zu einem vollwertigen 32Bit PNG Image zu konvertieren.
Was hindert dich daran.
Zitat:
(2.) lässt TPNGImage á la BitDepth=32bit nicht zu
Wofür braucht man die Komponente wenn ich das im Speicher erledigen kann.
Es scheint mir ohne Komponente seid ihr alle aufgeschmissen.
Zitat:
Ab da verstehe ich nicht mehr wirklich viel :/.
Bestätigt meine vermutung.
Zitat:
(3.) ist in meinem Fall nicht möglich, da die Bilder so gegeben sind.
Nichts ist gegeben hinzunehmen. Siehe beide Kommentare zuvor.

Geändert von venice2 (25. Apr 2020 um 21:18 Uhr)
  Mit Zitat antworten Zitat
Redeemer

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

AW: PNG in TImage falsch dargestellt

  Alt 26. Apr 2020, 09:24
Zitat:
aber eben nicht richtig bzw. offensichtlich. TPNGImage hat
Ihr solltet euch mal langsam einigen.
Was denn nu TImage oder TPNGImage
Wofür braucht man die Komponente wenn ich das im Speicher erledigen kann.
Es scheint mir ohne Komponente seid ihr alle aufgeschmissen.
So große Töne spucken, wenn man noch nicht mal weiß, was Delphi-Referenz durchsuchenTPNGImage ist...

Zitat:
(1.) geht mit Palettenbildern nicht
geht nicht gibt es nicht.
Du suchst eine Herausforderung? Alles klar, dann erstell doch einfach mal ein Computerprogramm, das irgendein Problem aus dieser Liste in polynomieller Zeit löst.

Es ist ein einfaches dein Paletten Bild im Speicher zu einem vollwertigen 32Bit PNG Image zu konvertieren.
Das ist dennoch ein richtiger Ansatz.
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 01:10 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