soopey: Image-Funktionen

Hi,

ich habe schon gesucht, aber leider nichts gefunden.
Ich wüsste gerne, in wie weit PHP mit dem Alpha-Kanal bei Bildern umgehen kann.

Folgendes habe ich vor:
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).

Ist dies mit PHP zu realisieren?

Gruss
snoopey

  1. Hallo,

    Ist dies mit PHP zu realisieren?

    der Creator von PHP hat mal gesagt:
        "PHP kann alles, ausser Leberwurstbrote schmieren."

    Also kann es auch Bilder manipulieren.
    Jeh nach Hilfsmittel ist der "Mitwirkungsaufwand" unterschiedlich hoch.

    • mit GD-Lib muss man alles selber berechnen und Pixel fuer Pixel setzen.
    • mit ImageMagick hat man den Komfort eines Grafikprogrammes
        muss sich aber durch die Doku kaempfen ...
      Irgendwas ist ja immer ... ;-)

    Gruss und Dank
    Norbert

  2. (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