Darstellung eines Images mit transparentem Hintergrund

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
7x7
Beiträge: 591
Registriert: 14.08.2007 15:41
Computerausstattung: ganz toll
Wohnort: Lelbach

Darstellung eines Images mit transparentem Hintergrund

Beitrag von 7x7 »

Ich möchte den transparenten Hintergrund dieses Bildes
(Download Speaker.png) Bild
der unten im Code weiss gezeigt wird, transparent darstellen.

Geht aber so...

Code: Alles auswählen

UsePNGImageDecoder()
Global Image0=CatchImage(0, ?Image0)

DataSection
Image0:
  IncludeBinary "E:\SpeakerOn.png"
EndDataSection

If OpenWindow(0, 100,100,100,100, "Transparenz-Test",#PB_Window_SystemMenu | #PB_Window_TitleBar )
     ImageGadget(1, 20, 20, 40, 35, Image0)
            
	Repeat 
		Event=WaitWindowEvent() 
	Until Event=#PB_Event_CloseWindow 
EndIf
...nicht. Ist aber ein ".png"-File. Was mache ich falsch?
- alles was ich hier im Forum sage/schreibe ist lediglich meine Meinung und keine Tatsachenbehauptung
- unkommentierter Quellcode = unqualifizierter Müll
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: Darstellung eines Images mit transparentem Hintergrund

Beitrag von PureLust »

Hi 7x7,

das von Dir verwendete Bid scheint nur 24 bit Farbtiefe zu haben und somit keine Alpha-Channel-Information zu beinhalten:

Code: Alles auswählen

UsePNGImageDecoder()
LoadImage(0,"E:\SpeakerOn.png")
Debug ImageDepth(0)
Auch ACDSee zeigt mir bei Deinem Bild nur 24 Bit Farbtiefe an.

Das transparente ImageGadgets (zumindest mit selbst gezeichneten 32-bit Images) funktionieren kannst Du HIER sehen.
Ob's nun am PNG-Decoder oder Deinem Bild liegt kann ich nicht genau sagen, aber da das Bild nach dem Laden in PB nur mit 24bit Farbtiefe vorliegt fehlt dort ganz klar der Alpha-Channel.

[Nachtrag:]
Hab Dein Bild gerade mal in Paint.net eingeladen.
Es scheint zwar Transparentinformationen zu beinhalten, scheinbar aber in einem Format welches vom PB-eigenen PNG-Decoder nicht unterstützt wird.
Nachdem ist das Bild dann nochmal mit Paint.net im PNG 32-bit Modus abgespeichert hatte, vergrößerte sich die Datei von 1776 Bytes auf 2009 Bytes.
Diese neu gespeicherten Datei wurde von PB dann auch als Image mit 32-bit Farbtiefe erkannt und somit funktionierte dann auch die Transparenz beim ImageGadget() problemlos.


Gruß, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Re: Darstellung eines Images mit transparentem Hintergrund

Beitrag von Marvin »

Wenn ich das Bild hier mit GIMP öffne, habe ich einen wunderschönen Alphakanal. Und auch im Browser kann ich den Hintergrund (zumindest an einigen Stellen) durchscheinen sehen.

Daran wirds also eher nicht liegen.

EDIT: Ah, EDIT gesehen. <)
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: Darstellung eines Images mit transparentem Hintergrund

Beitrag von PureLust »

Marvin hat geschrieben:EDIT: Ah, EDIT gesehen. <)
:mrgreen:

Hab mir das Original-Bild gerade noch mal was näher angeschaut.
Wie ich sehen konnte sind die Transparenzinformationen in diesem Bild in einem tRNS-Chung gespeichert und eben nicht wie "üblich" per sRGB.
PNG Specifications hat geschrieben:The tRNS chunk specifies that the image uses simple transparency: either alpha values associated with palette entries (for indexed-color images) or a single transparent color (for grayscale and truecolor images). Although simple transparency is not as elegant as the full alpha channel, it requires less storage space and is sufficient for many common cases.
Der tRNS-Chunk scheint also vom PB-PNG-Decoder nicht unterstützt zu werden. /:->

Wenn Dich das Thema interessiert kannst Du Dir HIER weitere Infos dazu reinpfeifen.

Schönen Gruß, Albert. ;)
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: Darstellung eines Images mit transparentem Hintergrund

Beitrag von PureLust »

Hi again, ...

hab mich mal hingesetzt und eine kleine Routine geschrieben um aus solche PNGs den tRNS-Chunk auszuwerten und daraus Images mit brauchbarem AlphaChannel zu machen.

Mehr dazu in DIESEM Thread.

Ich hoffe Ihr könnt was damit anfangen.

Gruß, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Antworten