[PHP] Image nicht transparent

Dieses Thema im Forum "Webentwicklung" wurde erstellt von sft-FTW, 3. Mai 2013 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 3. Mai 2013
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Image nicht transparent

    Hallo Freunde der Nachtschicht,
    ich bin mit meinem Latein am Ende und komme einfach nicht weiter.

    Folgende Ausgangssituation:
    Für eine kleine Aktion (Ansammlung von LoL-Spieler aus einem Stadtkreis) wollte ich eine kleine Seite schreiben mit der man sich für sein "Spieler-Profil" ein kleines "Spieler-Profilbild" erstellen kann.
    Man gibt ein paar Infos ein, wählt ein bild aus und lässt dann ein bild generieren, in dem einfach die infos drauf gepappt werden und ein rahmen drüber gelegt wird.

    das problem mit dem ich zur zeit einfach zu hart beschäftigt bin ist,
    dass das ergebnis nicht transparent dargestellt wird...
    warum nicht?

    hier der code:

    Spoiler
    PHP:
    <? php
    $name 
    $_POST [ 'name' ];
    $champion  $_POST [ 'champion' ];
    $lane  $_POST [ 'lane' ];
    $tempname  $_FILES [ 'bild' ][ 'tmp_name' ];

    // Header setzten
    header ( "Content-type: image/png" );
    // Bilder laden
    $imgsrc  imagecreatefromjpeg ( $tempname );  //Foto
    $imgzeichen  imagecreatefrompng ( "rahmen.png" );  // Bild 2
    // Bild Infos
    $width  imagesx ( $imgzeichen );  // Höhe Hauptbild
    $height  imagesy ( $imgzeichen );  // Breite Hauptbild

    $x  imagesx ( $imgsrc );  // Höhe Bild 2
    $y  imagesy ( $imgsrc );  // Breite Bild 2

    // Bilder erzeugen
    $img  imagecreatetruecolor ( $width $height );
    // Bild einfügen
    imagecopyresized ( $img $imgsrc 10 , 10 , 0 , 0 , 300 , 450 , $x , $y );
    // Wasserzeichen einfügen
    $abstand_links  0 ;
    $abstand_oben  0 ;

    imagecopy ( $img $imgzeichen $abstand_links $abstand_oben , 0 , 0 , $x $y );

    //Texte hinzufügen
    $farbew  imagecolorallocate ( $img , 255 , 255 , 255 );
    imagestring ( $img 5 100 , 450 , $name , $farbew );
    imagestring ( $img 5 100 , 500 , $champion , $farbew );
    imagestring ( $img 5 100 , 550 , $lane , $farbew );

    // Bild anzeigen
    imagepng ( $img );
    // Speicher freigeben
    imagedestroy ( $img );
    ?>

    hier ist ein beispielergebnis:
    Bild

    das problem ist einfach das schwarze außerhalb des roten rahmens...
    ich hab schon so viele threads dazu im www durchforstet, keiner hat mir mein gewolltes ergebnis erbraucht
     
  2. 3. Mai 2013
    AW: Image nicht transparent

    PHP: imagesavealpha - Manual
     
    1 Person gefällt das.
  3. 3. Mai 2013
    AW: Image nicht transparent

    danke für die erste hilfe,
    das habe ich auch schon in einem anderen thread gefunden, allerdings liefert mir
    PHP:
    imagealphablending ( $img false );
    imagepng ( $img );
    das selbe ergebnis wie vorher, also keine veränderung ?(
     
  4. 3. Mai 2013
    AW: Image nicht transparent

    Du musst "imagealphablending()" auch auf "true" setzen
     
  5. 3. Mai 2013
    Zuletzt bearbeitet: 3. Mai 2013
    AW: Image nicht transparent

    wie doof von mir -.-

    //edit: bringt auch nix
     
  6. 3. Mai 2013
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Image nicht transparent

    Bild

    image.php
    PHP:
    <? PHP

    $im 
    imageCreateFromPng 'background.png'  );

    imageAlphaBlending $im false  );
    imageSaveAlpha $im true  );


    header 'Content-type: image/png'  );
    imagePng $im  );

    imageDestroy $im  );
    index.html
    HTML:
    <!doctype html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Image Transparenz</title>
     
    <style>
     .demo {
     display: inline-block;
     margin: 12px;
     padding: 12px;
     }
    </style>
    </head>
    <body>
    
     <div class="demo" style="background-color:#ccc"><img src="image.php"></div>
     <div class="demo" style="background-color:#000"><img src="image.php"></div>
     <div class="demo" style="background-color:#fff"><img src="image.php"></div>
     <div class="demo" style="background-color:#f00"><img src="image.php"></div>
     <div class="demo" style="background-color:#ff0"><img src="image.php"></div>
     
    </body>
    </html>

    background.png
    Bild
     
  7. 3. Mai 2013
    Zuletzt bearbeitet: 3. Mai 2013
    AW: Image nicht transparent

    hey, kannst du deinem post vielleicht ne kleiner erklärung beifügen?
    hab da noch nicht so ganz den durchblick
    heist das jetzt dass alle farben aus deiner preview.png zusammen eine transparenz ergebeben?

    und ich einfach nur
    imageAlphaBlending und imageSaveAlpha benutzen muss? hab beie funktionen vor die ausgabe des bildes gesetzt, selbes ergebnis wie vorher

    Spoiler
    PHP:
    <? php
    $tempname 
    $_FILES [ 'bild' ][ 'tmp_name' ];

    //Header
    header ( "Content-type: image/png" );

    //Bilder laden
    $imgsrc = imagecreatefromjpeg ( $tempname );
    $imgzeichen = imagecreatefrompng ( "rahmen.png" );

    //Bild Infos
    $width = imagesx ( $imgzeichen );
    $height = imagesy ( $imgzeichen );
    $x = imagesx ( $imgsrc );
    $y = imagesy ( $imgsrc );

    //Bild erzeugen
    $img = imagecreatetruecolor ( $width , $height );
    //Bild einfügen
    imagecopyresized ( $img , $imgsrc , 10 , 10 , 0 , 0 , 300 , 450 , $x , $y );
    $abstand_links = 0 ;
    $abstand_oben = 0 ;
    //Rahmen drüber
    imagecopy ( $img , $imgzeichen , $abstand_links , $abstand_oben , 0 , 0 , $x , $y );

    //Bild anzeigen und löschen
    imagealphablending $img false  );
    imagesavealpha $img true  ); 
    imagepng ( $img );
    imagedestroy ( $img );
    ?>

    sry wenn ich etwas schwer von begriff bin
     
  8. 3. Mai 2013
    Zuletzt bearbeitet: 3. Mai 2013
    AW: Image nicht transparent

    PHP:
     <?php
    $tempname 
    $_FILES [ 'bild' ][ 'tmp_name' ];

    //Header
    header ( "Content-type: image/png" );

    //Bilder laden
    $imgsrc = imagecreatefromjpeg ( $tempname );
    $imgzeichen = imagecreatefrompng ( "rahmen.png" );

    //Bild Infos
    $width = imagesx ( $imgzeichen );
    $height = imagesy ( $imgzeichen );
    $x = imagesx ( $imgsrc );
    $y = imagesy ( $imgsrc );

    //Bild erzeugen
    $img = imagecreatetruecolor ( $width , $height );

    // EDIT
    imagefill ( $img 0 0 imagecolorallocatealpha ( $img 0 0 0 127 ));

    //Bild einfügen
    imagecopyresized ( $img , $imgsrc , 10 , 10 , 0 , 0 , 300 , 450 , $x , $y );

    // EDIT
    imagedestroy ( $imgsrc );

    $abstand_links = 0 ;
    $abstand_oben = 0 ;
    //Rahmen drüber
    imagecopy ( $img , $imgzeichen , $abstand_links , $abstand_oben , 0 , 0 , $x , $y );

    // EDIT
    imagedestroy ( $imgzeichen );

    //Bild anzeigen und löschen

    // EDIT
    // imagealphablending( $img, false );

    imagesavealpha $img true  ); 
    imagepng ( $img );
    imagedestroy ( $img );

    ?> 
     
    1 Person gefällt das.
  9. 3. Mai 2013
    AW: Image nicht transparent

    danke murdoc, es funktioniert
    jetzt muss ich nur noch wissen wieso

    imagefill setzt irgendwas als hintergrundfarbe was imagesavealpha dann als transparenz interpretiert ?(
     
  10. 3. Mai 2013
    AW: Image nicht transparent

    Das problem ist das du, aus welchem grund auch immer, ein drittes Bild erzeugst mit imageCreateTrueColor und nicht in der Dokumentation lies was das macht.

    Warum zeichnest du dein Bild nicht auf der $imgzeichen resource?
     
  11. 3. Mai 2013
    AW: Image nicht transparent

    manche menschen gehören für ihre dummheit bestraft
    :bulle:

    danke an alle!

    /close
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.