Php: x Bilder zu 1nem ?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Ich habe irgendwo mal so ein Script gesehen. Ich schaue jetzt nach und poste (bzw. editiere) dann wahrscheinlich noch einmal, wenn ich von der Schule zürück komme.

      Kannst aber schon mal php imagecreate oder php Bilder erzeugen googlen da findest du schon einmal viele Beispiele, wie man Bilder erstellt.
    • Hier mal ein Beispiel wie es aussehen könnte :

      PHP-Quellcode

      1. <?php
      2. $filetype_allowed = array("jpg","jpeg","png"); //<-- Erlaubte Endungen der Bilder. Gross und Kleinschreibung wird NICHT beachtet
      3. $imgpath = "http://www.mmorpg-core.com/forum/images/"; //<-- Achtung am ende ein / setzten
      4. header("Content-type: image/jpeg");
      5. foreach(glob($imgpath."*.*") as $imga) {
      6. list($filename, $filetype) = explode(".",basename($imga));
      7. if(in_array(strtolower($filetype),$filetype_allowed)) {
      8. if(!isset($imtotal)) {
      9. if(strtolower($filetype) == "jpg" || strtolower($filetype) == "jpeg") {
      10. $imtotal = ImageCreateFromJPEG($imgpath.basename($imga));
      11. }
      12. if(strtolower($filetype) == "png") {
      13. $imtotal = ImageCreateFromPNG($imgpath.basename($imga));
      14. }
      15. } else {
      16. if(strtolower($filetype) == "jpg" || strtolower($filetype) == "jpeg") {
      17. $im = ImageCreateFromJPEG($imgpath.basename($imga));
      18. }
      19. if(strtolower($filetype) == "png") {
      20. $im = ImageCreateFromPNG($imgpath.basename($imga));
      21. }
      22. $width = max(imagesx($im),imagesx($imtotal));
      23. $height = imagesy($im)+imagesy($imtotal);
      24. $immix = ImageCreate($width,$height);
      25. imagecopy($immix, $imtotal, 0, 0, 0, 0, imagesx($imtotal), imagesy($imtotal));
      26. imagecopy($immix, $im, 0, imagesy($imtotal), 0, 0, imagesx($im), imagesy($im));
      27. imagedestroy($imtotal);
      28. $imtotal = ImageCreate(imagesx($immix), imagesy($immix));
      29. imagecopy($imtotal, $immix, 0, 0, 0, 0, imagesx($immix), imagesy($immix));
      30. imagedestroy($immix);
      31. imagedestroy($im);
      32. }
      33. }
      34. }
      35. imagejpeg($imtotal);
      36. imagedestroy($imtotal);
      37. ?>
      Alles anzeigen
    • Hamukau;278070 schrieb:

      eigentlich blicke ich das script meines vorposters, allerdings ist bei mir noch die frage offen, wie/wo ich den namen des neuen Wortes eingebe :x
      lg


      Also so wie ich es hier gelesen habe , ging es darum mehrere Bilder aneinander zu hängen. Das Script oben macht dieses in dem es immer ein Bild unten anhängt beim auslesen eines Ordners.

      Falls was anderes gewünscht war/wird eben kurz hier schrieben.
    • So was ich dir noch anbieten könnte wäre dies :

      PHP-Quellcode

      1. <?php
      2. header ("Content-type: image/png");
      3. $text = $_GET['m'];
      4. $fsize = '100'; //<-- Font size.
      5. $ffile = "./Blade2.ttf"; //<-- Nicht vergessen eine ttf datei zu verlinken
      6. $bgcolor = array('0','0','0'); //<-- RGB Farbe für den Hintergrund
      7. $color = array('255','255','255'); //<-- RGB Farbe für die Schrift
      8. $bbox = imageftbbox($fsize, 0, $ffile, $text);
      9. $height = str_replace("-", "", $bbox[5]);
      10. $im = imagecreate ($bbox[4]+10,$height+10);
      11. $bg_color = ImageColorAllocate ($im, $bgcolor[0], $bgcolor[1], $bgcolor[2]);
      12. $fcolor = ImageColorAllocate ($im, $color[0], $color[1], $color[2]);
      13. imagefill($im, 0, 0, $bg_color);
      14. $x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 2;
      15. $y = $bbox[1] + (imagesy($im) / 2) - 2;
      16. imagefttext($im, $fsize, 0, $x, $y, $fcolor, $ffile, $text);
      17. ImagePNG ($im);
      18. imagedestroy($im);
      19. ?>
      Alles anzeigen
    • Habe das letzte Script hier nochmal etwas überarbeitet. Nun kann man mit /n im Text auch eine Zeile runter springen.
      Die Fonts werden im Ordner fonts hinterlegt. Da wo das Script liegt dort muss auch ein Ordner namens fonts sein mit den fonts drin die verfügbar sein sollen.

      Im Script gibt es ein array wo alle Fonts die Ihr so im fonts Ordner drin habt , verwendet werden können.

      Das Script kann folgendermassen aufgerufen werden :
      meineDomain.de/dasScript.php

      Folgende Parameter sind verfügbar :
      s=Font grösse (optional)
      f=Font Zahl (beginnend bei 0) Je mehr Fonts angegeben desto höher kann die Zahl sein. Gezählt wird ab 0 im Script bei den Fonts (optional)
      m=Die Nachricht welche angezeigt werden soll ( mit /n wird eine neue Zeile begonnen )


      Am ende könnte euer Link so aussehen :

      Quellcode

      1. meineDomain.de/dasScript.php?s=50&f=3&m=Mein persoenlicher text\nsteht hier herum



      PHP-Quellcode

      1. <?php
      2. $defsize = '75'; //<-- Default Grösse wenn keine angegeben ist per s=neue grösse
      3. $allfonts = array("Blade2.ttf","Rocky.ttf","Bloodrac.ttf"); //<-- Alle Fonts die Ihr verfügbar gemacht habt im fonts Ordner. Die erste ist die Default wenn keine angegeben.
      4. $bgcolor = array('0','0','0'); //<-- RGB Farbe für den Hintergrund
      5. $color = array('255','255','255'); //<-- RGB Farbe für die Schrift
      6. $text = $_GET['m'];
      7. if(empty($text) || !isset($text)) {
      8. $text = "Der Text wurde vergessen anzugeben.";
      9. }
      10. if(isset($_GET['s'])) {
      11. $fsize = $_GET['s'];
      12. } else {
      13. $fsize = $defsize;
      14. }
      15. if(isset($_GET['f']) && is_numeric($_GET['f']) && $_GET['f'] < count($allfonts)) {
      16. $ffile = "./fonts/".$allfonts[$_GET['f']];
      17. } else {
      18. $ffile = "./fonts/".$allfonts[0];
      19. }
      20. $newtext = explode("\\n",$text);
      21. foreach ($newtext as $curtext) {
      22. $bbox = imageftbbox($fsize, 0, $ffile, $curtext);
      23. $height = str_replace("-", "", $bbox[5]);
      24. if(isset($mainim)) {
      25. $im = imagecreate ($bbox[4]+10,$height+20);
      26. $bg_color = ImageColorAllocate ($im, $bgcolor[0], $bgcolor[1], $bgcolor[2]);
      27. $fcolor = ImageColorAllocate ($im, $color[0], $color[1], $color[2]);
      28. imagefill($im, 0, 0, $bg_color);
      29. $x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 2 + 10;
      30. $y = $bbox[1] + (imagesy($im) / 2) - 2 + 15;
      31. imagefttext($im, $fsize, 0, $x, $y, $fcolor, $ffile, $curtext);
      32. $im_temp = imagecreate(max(imagesx($mainim),imagesx($im)),imagesy($mainim)+imagesy($im));
      33. $mainx = (max(imagesx($mainim),imagesx($im_temp))-min(imagesx($mainim),imagesx($im_temp)))/2;
      34. $newx = (max(imagesx($im),imagesx($im_temp))-min(imagesx($im),imagesx($im_temp)))/2;
      35. imagecopy($im_temp, $mainim, $mainx, 0, 0, 0, imagesx($mainim), imagesy($mainim));
      36. imagecopy($im_temp, $im, $newx, imagesy($mainim), 0, 0, imagesx($im), imagesy($im));
      37. imagedestroy($mainim);
      38. $mainim = ImageCreate(imagesx($im_temp), imagesy($im_temp)+5);
      39. imagecopy($mainim, $im_temp, 0, 0, 0, 0, imagesx($im_temp), imagesy($im_temp));
      40. imagedestroy($im);
      41. imagedestroy($im_temp);
      42. } else {
      43. $mainim = imagecreate ($bbox[4]+10,$height+20);
      44. $bg_color = ImageColorAllocate ($mainim, $bgcolor[0], $bgcolor[1], $bgcolor[2]);
      45. $fcolor = ImageColorAllocate ($mainim, $color[0], $color[1], $color[2]);
      46. imagefill($mainim, 0, 0, $bg_color);
      47. $x = $bbox[0] + (imagesx($mainim) / 2) - ($bbox[4] / 2) - 2 + 5;
      48. $y = $bbox[1] + (imagesy($mainim) / 2) - 2 + 5;
      49. imagefttext($mainim, $fsize, 0, $x, $y, $fcolor, $ffile, $curtext);
      50. }
      51. }
      52. header ("Content-type: image/png");
      53. ImagePNG ($mainim);
      54. imagedestroy($mainim);
      55. ?>
      Alles anzeigen
    • Was auch immer du dort knacken willst bei dem Script ^^ Schliesslich bindet man es eigentlich nur in eine andere Seite ein als img tag

      Quellcode

      1. <img src="http://www.meineDomain.de/script.php?m=Mein Text hier" border="0" alt="Mein Text hier" title="Der Title ist ausverkauft">



      Das Script selbst greift weder auf Cookies , Sessions oder Datenbanken zu ;-) Von daher glaube ich kaum das es sinnvoll ist das Script zu sichern in irgendeiner weise vor XSS Injection und ähnlichem.
    • @Psycho
      das Script sollte keine Gefahr darstellen, da ein durch die GET-Parameter eingeschleuster Javascript-Code nicht ausgeführt wird (wenn man zB den Parameter 'm' mit JS-Code befüllt, wird dieser als Bild wieder ausgegeben, da er für das Bild verwendet wird und somit ungefährlich)
      Die anderen Parameter gelangen auch nicht zum Browser zurück über den HTMl Quelltext, somit kann der Browser eigentlich nichts ausführen.
      Kann mich aber auch täuschen, so auf den ersten Blick sieht es zumindest sauber aus ohne Gefahr. (bin das etwas durchgegangen und hab nix entdeckt)
    • internetfreak;279454 schrieb:

      @Psycho
      das Script sollte keine Gefahr darstellen, da ein durch die GET-Parameter eingeschleuster Javascript-Code nicht ausgeführt wird (wenn man zB den Parameter 'm' mit JS-Code befüllt, wird dieser als Bild wieder ausgegeben, da er für das Bild verwendet wird und somit ungefährlich)
      Die anderen Parameter gelangen auch nicht zum Browser zurück über den HTMl Quelltext, somit kann der Browser eigentlich nichts ausführen.
      Kann mich aber auch täuschen, so auf den ersten Blick sieht es zumindest sauber aus ohne Gefahr. (bin das etwas durchgegangen und hab nix entdeckt)


      Man brauch es ja nur testen, einzige was dann kommt ist das die grafik einen fehler hat beim erzeugen.

      Und wem es zu unsicher ist , der setzt den header von unten nach ganz oben. Schon kann nicht einmal mehr irgendwas in html ausgegeben werden.