| 

.NET C# Java Javascript Exception

1
Moin allerseits.

Ich habe immer noch nicht ganz verstanden, wozu imagealphablending() da ist. imagesavealpha() ist wohl dazu da, dass die alpharelevanten Daten beim Speichern des Bildes auch mitgelifert werden. Aber was macht alphablending?

Ich verwende eine Bibliothek, die Bilder in der Größe verändert, beschneidet, Logos anfügt etc. http://php.net/manual/de/function.imagecreatefrompng.php#85754 beschreibt, dass man für semittransparente Grafiken das Alphablending aktivieren muss. Allerdings hatte ich Probleme beim erstellen einer neuen Grafik. Erst als ich dort das blending ausgeschaltet habe, war der Hintergrund transparent.

Kann mir bitte einer schlüssig erklären, was das Blending überhaupt ist, und wann man es ein und wann ausschalten sollte?

Danke.
16.03.2012
johny7 521 1 8
Was für eine Grafik war das?
Jaksa 16.03.2012
Das war eine PNG-Datei.
johny7 16.03.2012
War das ein Bild mit einer Farbpalette oder als RGB angabe?
Jaksa 16.03.2012
Welches Bild meinst du?
Im Zuge des Verkleinerns wird das Originalbild kopiert auf ein neu erstelltes Bild. Das neue wurde mit imagecreatetruecolor() erstellt.
johny7 16.03.2012
Dann hätte es klappen müssen. Das alphablend funktioniert nämlich nicht mit 256 Farben - Bildern
Jaksa 16.03.2012
Das ist mir auch klar. Das funktioniert ja jetzt auch. Es stand nur nirgends geschrieben, dass ich - wenn ich ein Image mit transparentem Hintergrund erstellen will - nach dem createtruecolor das alphablending ausschalten muss!
johny7 16.03.2012
1 Antwort
0
Hi Johny,

Das ist hier ganz gut beschrieben.

Die Option bestimmt das Verhalten beim Überlagern von Bildern mit Alpha-Kanal-Informationen (sprich: Transparenzen und Semi-Transparenzen.)

Ist imagealphablending auf true gesetzt, so findet tatsächlich eine echte Überagerung statt: Der entstehende Pixel wird anteilig mit einer bestimmten Farbe Überlagert. Ein knallroter Pixel auf dem unteren Bild würde durch eine Überlagerung mit einem 50%-transparenten schwarzen Pixel also dunkelrot erscheinen.

Ist die Option nicht gesetzt, wird beim Überlagern keine Rücksicht genommen auf den darunterliegenden Pixel. Was bleibt ist dann ein 50%iges schwarz, und damit ein wahrscheinlich grauer Pixel (Das könnte noch von den Hintergundeinstellungen für das betreffende Bild abhängen, da bin ich mir aber nicht sicher.)

Grüße
huckepick
16.03.2012
huckepick 887 2 8

Stelle deine Php-Frage jetzt!