EisFuX: Tranzparenz und Bilder übereinanderkopieren

Beitrag lesen

(Hallo|Hi(ho)|Tag) soopey,

ich habe schon gesucht, aber leider nichts gefunden.

PHP-Handbuch zu den eingebauten Grafikfunktionen (GD-Lib).

Ich wüsste gerne, in wie weit PHP mit dem Alpha-Kanal bei Bildern umgehen kann.

Das hängt u.A. von der GDLib-Version (und damit von der PHP-Version) ab.

Ich habe zwei Bilder, die ich übereinander zeichnen möchte, wobei in einem bestimmten Bereich ein Verlauf von dem einen Bild zum anderen sein soll.
Sprich: innerhalb des Verlaufs soll von dem oberen Bild die Transparenz erhöht werden, bis das Bild nicht mehr sichtbar ist und das untere Bild durchscheint (wie man es aus Grafikprogrammen kennt).

Auf den ersten Blick würde mir da folgende Vorgehensweise vorschweben:

1. Du lädst Bild A in eine 24-Bit-RGB-Image-Resource (also ein 24Bit-RGB-Grafikformat -- wie JPEG, PNG -- laden, oder ein palettenorientiertes Bild in eine vorbereitete 24-Bit-RGB-Resource laden).

2. Du lädst Bild B in eine 24-Bit-RGB-Image-Resource.

3. Du kopierst das Bild B zeilenweise (von oben nach unten) mit aufsteigender Transparenz in das Bild A. Dazu benutzt du ImageCopyMerge(). Die Transparenz wird mit dem Parameter "pct" geändert. Er kann Werte von 0 (volle Transparenz) bis 100 ("undurchsichtig") annehmen.

4. Du speicherst Bild A unter anderem Namen und prüfst, ob du erfolgreich warst.

Das funktioniert so einfach natürlich nur, wenn die Transparenz über einen rechteckigen Bereich (das kann auch eine ein Pixel hohe Bildzeile sein) festlegbar ist. Bei komplizierteren Verläufen kannst du das pixelweise machen, was aber die Laufzeit stark erhöht.

Oder du baust dir deinen Alphakanal für Bild B selbst und suchst dir eine der Image-Funktionen, die Grafiken mit Alphakanal über andere Grafiken legen kann.

MffG
EisFuX