4 Bilder in eines zusammenfügen erzeugt schwarze Flächen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 4 Bilder in eines zusammenfügen erzeugt schwarze Flächen

    Hallo zusammen,

    <= GD-Lib Kackn00b

    ich habe folgendes Problem:

    Ich möchte vier verschiedene Bilder (die zufällig aus einer MySQL DB ausgelesen werde; der Teil funktioniert) in eines zusammenpacken und sie mit einem Schriftzug versehen (auch der Teil funktioniert).

    Da diese Bilder alle unterschiedlich hoch aber alle gleich breit sind, möchte ich die fehlenden Flächen mit weiss auffüllen.

    Zuerst erstelle ich 4 Bilder die alle 200x253 gross sind und fülle sie mit einer weissen HG-Farbe. Dann hole ich mir die 4 zufälligen Bilder und kopiere sie auf die weissen Bilder und versehe sie mit dem Schriftzug. Ab diesem zeitpunkt kommen die schwarzen Flächen. Danach kopiere ich die 4 Bilder in ein 400x506 grosses Bild hinein und gebe es aus.


    Durch meine Fehlersuche ist mittlerweile bestimmt eine Menge unnötigen Codes dazugekommen sorry dafür.

    Langer Rede gar kein Sinn:




    Code-Ausschnitt:

    PHP-Code:
    $dest = @imagecreatetruecolor(400506);
    $bild1 imagecreatefromjpeg('../../shop/images/product_images/thumbnail_images/'.$image[1].'');
    $bild2 imagecreatefromjpeg('../../shop/images/product_images/thumbnail_images/'.$image[2].'');
    $bild3 imagecreatefromjpeg('../../shop/images/product_images/thumbnail_images/'.$image[3].'');
    $bild4 imagecreatefromjpeg('../../shop/images/product_images/thumbnail_images/'.$image[4].'');
    $bild11 = @imagecreatetruecolor(200253);
    $bild22 = @imagecreatetruecolor(200253);
    $bild33 = @imagecreatetruecolor(200253);
    $bild44 = @imagecreatetruecolor(200253);
    $weiss0 imagecolorallocate($dest250250250);
    $weiss1 imagecolorallocate($bild11250250250);
    $weiss2 imagecolorallocate($bild22250250250);
    $weiss3 imagecolorallocate($bild33250250250);
    $weiss4 imagecolorallocate($bild44250250250);
    imagefill($bild11,0,0,$weiss1);
    imagefill($bild22,0,0,$weiss2);
    imagefill($bild33,0,0,$weiss3);
    imagefill($bild44,0,0,$weiss4);
    imagecopy($bild11$bild10000200253);
    imagecopy($bild22$bild20000200253);
    imagecopy($bild33$bild30000200253);
    imagecopy($bild44$bild40000200253);

    //Text einbetten
    $fontsize=20;
    $fontangle=0;
    $font="./pristina.ttf";


    $red ImageColorAllocate ($bild125500);
    imagettftext($bild11$fontsize5510253$red$font$text[1]);
    imagettftext($bild22$fontsize5510253$red$font$text[2]);
    imagettftext($bild33$fontsize5510253$red$font$text[3]);
    imagettftext($bild44$fontsize5510253$red$font$text[4]);

    // Copy and merge
    imagecopy($dest$bild110000200253);
    imagecopy($dest$bild22200000200253);
    imagecopy($dest$bild33025300200253);
    imagecopy($dest$bild4420025300200253);

    // Output and free from memory
    $bilddatei '/www/htdocs/w006fd8b/zone-one/yves/myspacepromo/test.jpg';
    imagejpeg($dest$bilddatei100);


    imagedestroy($dest);
    imagedestroy($bild1);
    imagedestroy($bild2);
    imagedestroy($bild3);
    imagedestroy($bild4); 

  • #2
    Warum hast denn denn @s vor den imagecreatetruecolors? Ohne den Code im Detail angeguckt zu haben: Mal dran gedacht, das "große Bild" in die du die vier anderen Kopierst, auch mit weiß zu füllen, ehe du die Bilder reinkopierst?
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      Wie ich sagte... ich bin ein GD-lib nixwisser...

      Ich hab mir anfangs Code zusammenkopiert.

      das entfernen der @ hat nix bewirkt auch das füllen des Endbilds nicht. Wie gesagt bereits beim füllen von $bild11...22...33...44 mit den existenten JPGs entstehen die schwarzen Balken.

      Kommentar


      • #4
        Original geschrieben von Cainte
        das entfernen der @ hat nix bewirkt
        Hab ich auch garnet behauptet, sondern gefragt warum du die da hingeschrieben hast

        PHP-Code:
        imagecopy($bild11$bild10000200253); 
        imagecopy($bild22$bild20000200253); 
        imagecopy($bild33$bild30000200253); 
        imagecopy($bild44$bild40000200253); 
        Du kopierst die Quell-Bilder immer auf die volle Größe des Zielbildes, auch wenn die Bilder gar nicht so groß sind. An den Stellen wo die Bilder nicht existieren, hat er also keinen Wert zum Kopieren, also 0, und 0 ist Schwarz. Gib hier mal die Größen von den Quellbildern an, dann dürfte es klappen.
        Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

        Kommentar


        • #5
          ok ... das wars...

          ich wusste es ist irgendein Anfängerfehler.

          Ich danke Dir für Deine Zeit :-)

          Kommentar

          Lädt...
          X