Moni: HTML vs imagecreatefrom

Hi all

Gemäss DB-Eintrag wird ein Bild geladen. (PHP + mySQL). Das gewünschte Bild wird korrekt angezeigt.

Nun möchte ich dem Bild ein Wasserzeichen zufügen, was funzt, wenn ich den PHP-Code NICHT in ein HTML-Gerüst packe.
Mache ich dies, zeigt sich das Bild mit lauter Buchstaben und Steuerzeichen!??

Es sieht so aus, als handelt es sich um ein Problem im "Header". Füge ich:
<? header("Content-Type: image/jpeg"); ?>
zuoberste ein, kriege ich wenigstens keinen "header has already been sent" Fehler....

Hat schon jemand ein ähnliches Problem geknackt? Bin für jeden Hinweis sehr dankbar ;O)

Liebe Grüsse
Moni

  1. Hi all

    Gemäss DB-Eintrag wird ein Bild geladen. (PHP + mySQL). Das gewünschte Bild wird korrekt angezeigt.

    Nun möchte ich dem Bild ein Wasserzeichen zufügen, was funzt, wenn ich den PHP-Code NICHT in ein HTML-Gerüst packe.
    Mache ich dies, zeigt sich das Bild mit lauter Buchstaben und Steuerzeichen!??

    Es sieht so aus, als handelt es sich um ein Problem im "Header". Füge ich:
    <? header("Content-Type: image/jpeg"); ?>
    zuoberste ein, kriege ich wenigstens keinen "header has already been sent" Fehler....

    Hat schon jemand ein ähnliches Problem geknackt? Bin für jeden Hinweis sehr dankbar ;O)

    Liebe Grüsse
    Moni

    Du kannst in eine JPG keine HTML-Daten einfügen.
    Wenn du So etwas machen möchtest dann musst du die PHP, die das Bild erstellt normal als img im HTML einbinden:
    <img src="bild.php">

    1. Hallo,

      Du kannst in eine JPG keine HTML-Daten einfügen.

      Da wir hier auch konkret bleiben wollen: Inline-Grafiken in HTML mit dem Hinweis, dass es im IE nicht funktioniert.

      Grüße
      Jeena Paradies

      --
      Steuererklärung online gar nicht so einfach | Jlog | Gourmetica Mentiri
  2. hi,

    Nun möchte ich dem Bild ein Wasserzeichen zufügen, was funzt, wenn ich den PHP-Code NICHT in ein HTML-Gerüst packe.
    Mache ich dies, zeigt sich das Bild mit lauter Buchstaben und Steuerzeichen!??

    Wie viel "HTML-Gerüst" enthalten denn deine normalen, nicht-dynamischen Bilder ...?

    Es sieht so aus, als handelt es sich um ein Problem im "Header".

    Nein, um eins in deiner Logik.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hallo
    Vor einem HEADER darf kein HTML Code an den Browser ausgegeben werden nicht mal ein <HTML>. Also musst du das Bild an ein anderes script übergeben das die Arbeit für dich macht:
    z.Bsp:
    echo "<img src="thumb.php?bildname=$bild">";

    und in der anderen Datei über $_Get den namen einlesen und dann kann dein Wasserzeichen script loslegen!
    MFg Hagen

  4. Habe vielleicht meine Frage unklar gestellt. Ok anders gesagt möchte ich den Code der Datei (Bildcopy.php):
    <?
    header("Content-Type: image/jpeg");

    $bild="1g.jpg";
    $logo="logo.png";

    $image2=imagecreatefromjpeg($bild);
    $image1=imagecreatefrompng($logo);
    $breite=imagesx($image2);
    $hoehe=imagesy($image2);
    $breite1=imagesx($image1);
    $hoehe1=imagesy($image1);

    imagecopy ($image2,$image1,($breite-$breite1)/2,($hoehe-$hoehe1)/2,0,0,$breite1,$hoehe1);

    imagejpeg($image2,"",100);
    ?>

    In die Datei (irgendwas.php) -> normale HTML-Datei per Include einfügen. Obschon "header("Content-Type: image/jpeg");" zuoberst in der Datei (irgendwas.php) steht, zeigt sich nicht das neu erstellte Bild, sondern eben nur die Steuerzeichen/Buchstaben.

    Was mache ich falsch? -> Lieber Wahsaga: Auf Deinen Kommentar kann ich verzichten.

    Danke & Gruss
    Moni

    1. Habe vielleicht meine Frage unklar gestellt. Ok anders gesagt möchte ich den Code der Datei (Bildcopy.php):
      <?
      header("Content-Type: image/jpeg");

      $bild="1g.jpg";
      $logo="logo.png";

      $image2=imagecreatefromjpeg($bild);
      $image1=imagecreatefrompng($logo);
      $breite=imagesx($image2);
      $hoehe=imagesy($image2);
      $breite1=imagesx($image1);
      $hoehe1=imagesy($image1);

      imagecopy ($image2,$image1,($breite-$breite1)/2,($hoehe-$hoehe1)/2,0,0,$breite1,$hoehe1);

      imagejpeg($image2,"",100);
      ?>

      In die Datei (irgendwas.php) -> normale HTML-Datei per Include einfügen.

      Du kannst keine JPG (denn diese wird ja hier mit PHP dynamisch erstellt) in HTML includen.
      Das ist das selbe wie wenn du eine JPG im Editor öffnest und in den HTML-Quellcode kopierst. Du musst die Bildcopy.php per HTML- oder CSS- Code in die irgendwas.php einfügen.

      1. Du kannst keine JPG (denn diese wird ja hier mit PHP dynamisch erstellt) in HTML includen.
        Das ist das selbe wie wenn du eine JPG im Editor öffnest und in den HTML-Quellcode kopierst. Du musst die Bildcopy.php per HTML- oder CSS- Code in die irgendwas.php einfügen.

        Ok, das scheint mir logisch. Wie genau binde ich das ein?
        include(bildcopy.php); ist ja falsch! Sorry die Fragen, aber ich kann in diesem und anderen Foren keinen Lösungsansatz finden :O(

        1. hi,

          Ok, das scheint mir logisch.

          Na endlich.

          Wie genau binde ich das ein?

          Haargenau so, wie du auch sonst ein Bild in HTML oder CSS "einbindest".

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Haargenau so, wie du auch sonst ein Bild in HTML oder CSS "einbindest".

            Folgender Code scheint meine Knacknuss zu sein:
            imagejpeg($image2,"",100);

            Habe schon folgendes versucht:
            $neuesBild=imagejpeg($image2,"",100);
            <img border=0 src="<? echo"$neuesBild"; ?>">

            Dies würde ja auch Deinem Lösungsansatz entsprechen?
            Auf alle Fälle funzt das auch nicht  :O(

            Moni

            1. hi,

              Habe schon folgendes versucht:
              $neuesBild=imagejpeg($image2,"",100);
              <img border=0 src="<? echo"$neuesBild"; ?>">

              Dies würde ja auch Deinem Lösungsansatz entsprechen?

              Nein, würde es nicht.

              imagejpeg gibt laut (englischem) Manual einen bool-Wert zurück - was soll der Browser damit anfangen, wenn du diesen ins src-Attribut eines img schreibst?

              Auf alle Fälle funzt das auch nicht  :O(

              Natürlich nicht, es ist immer noch Humbug.

              Also, noch mal:

              Wie bindest sonst ein ganz normales, statisches Bild in HTML ein?

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. Wie bindest sonst ein ganz normales, statisches Bild in HTML ein?

                Ohjeh, ob es wohl zu heiss ist für mich?  ;O)
                Ein statisches Bild füge ich so ein:
                <img border=0 src="bild.jpg">

                Aber ich habe noch immer nicht verstanden, wie ich den Bool-Wert da rein kriege! Gehe ich richtig der Annahme, dass ich den Bool-WErt umwandeln muss?

                Liebe Grüsse
                Moni

  5. Habe das Problem gelöst. Vielen Dank @ wahasa! Du hast mir auf die Sprünge geholfen  ;O)

    Anstelle von include muss ich einfach das Bild anzeigen lassen. Beim "src" gebe ich anstelle des Bildnamens einfach die zu includende Datei an. (Was neu ist für mich).

    <img border=0 src="bildcopy.php">

    Danke auch an "DG" und "Hagen".

    Liebe Grüsse
    Moni