Visualizzazione risultati 1 fino 6 di 6

Discussione: Creare delle immagini in PHP con del testo.

  1. #1
    Guest

    Predefinito Creare delle immagini in PHP con del testo.

    Ciao a tutti, io ho questo codice, vorrei sapere come posso utilizzarlo per creare delle immagini, dovrei usare qualche echo ma non ci capisco molto, l'ho solo riadattato per creare Sign e non avatar

    Codice PHP:
    <?php
    /**
    *
    * @package: Icy Phoenix
    * @version $Id: generate_sign.php - 1.0.0 - 2006/09/29
    * @copyright (c) 2006 Mighty Gorgon
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License
    *
    */

    // CTracker_Ignore: File checked by human
    define('IN_PHPBB', true);
    define('MG_CTRACK_FLAG', true);
    $phpbb_root_path = './';
    include(
    $phpbb_root_path . 'extension.inc');
    include(
    $phpbb_root_path . 'common.' . $phpEx);

    $fonts_path = 'images/fonts/';
    $generator_template_path = 'images/sign/base/';

    $dest_pic = htmlspecialchars($_GET['cachefile']);
    $source_pic = htmlspecialchars($_GET['signfile']);
    $source_pic_full = $source_pic . '.png';
    $text_content = htmlspecialchars(stripslashes($_GET['text_content']));
    $text_size = (isset($_GET['text_size'])) ? intval($_GET['text_size']) : '10';
    //$text_font = (isset($_GET['text_font'])) ? htmlspecialchars($_GET['text_font']) : 'triplex_bold.ttf';
    $text_font = (isset($_GET['text_font'])) ? htmlspecialchars($_GET['text_font']) : 'tahoma.ttf';
    $text_font = $fonts_path . $text_font;
    $text_color = (isset($_GET['text_color'])) ? htmlspecialchars($_GET['text_color']) : '#FFFFFF';
    $text_position = (isset($_GET['text_position'])) ? htmlspecialchars($_GET['text_position']) : '0';

    $sign_array = array('background_1', 'background_2');

    if (
    in_array($source_pic_full, $sign_array))
    {
    $source_pic = $generator_template_path . $source_pic_full;
    }
    else
    {
    $num = mt_rand(1, count($sign_array));
    $source_pic = $generator_template_path . $sign_array[$num];
    }

    write_text($source_pic, $dest_pic, $text_content, $text_font, $text_size, $text_color, $text_position);
    //write_text($source_pic, $dest_pic, $text_content, $text_font, $text_size, '#FFFFAA', $text_position);

    /**
    * Write text on images
    *
    * Detail description
    * @param none
    * @since 1.0
    */
    function write_text($source_pic, $dest_pic, $text_content, $text_font, $text_size = '10', $text_color = '#FFFFFF', $text_position = '0')
    {
    $temp_pic = imagecreatefrompng($source_pic);
    list(
    $image_width, $image_height) = getimagesize($source_pic);

    /*
    $temp_pic_empty = imagecreatetruecolor ($image_width, $image_height);
    imagealphablending($temp_pic_empty, false);
    imagecopyresampled($temp_pic_empty, $temp_pic, 0, 0, 0, 0, $image_width, $image_height, $image_width, $image_height);
    imagesavealpha($temp_pic_empty, true);
    //imagepng($im_re, 'small_redfade.png');
    $temp_pic2 = imagecreatefrompng($source_pic);
    */

    // Calculate the centre
    for(;;)
    {
    list(
    $left_x, , $right_x) = imagettfbbox($text_size, $text_position, $text_font, $text_content);
    $text_width = $right_x - $left_x;
    if(
    $image_width > $text_width + 5)
    {
    break;
    }
    $text_size = $text_size - 0.5;
    if(
    $text_size == 1)
    {
    die(
    'Font size may not be reduced further, try to insert a shorter text');
    }
    }
    $text_padding = ($image_width - $text_width) / 2;

    $text_color = (substr($text_color, 0, 1) == '#') ? substr($text_color, 1, 6) : $text_color;
    $text_color_r = hexdec(substr($text_color, 0, 2));
    $text_color_g = hexdec(substr($text_color, 2, 2));
    $text_color_b = hexdec(substr($text_color, 4, 2));

    $text_color = imagecolorresolve($temp_pic, $text_color_r, $text_color_g, $text_color_b);
    //$text_color = imagecolorallocate($temp_pic, $text_color_r, $text_color_g, $text_color_b);
    imagettftext($temp_pic, $text_size, $text_position, $text_padding, ($image_height - ($text_size / 2)), $text_color, $text_font, $text_content);

    if(
    $_GET['dl'])
    {
    header('Content-Disposition: attachment; filename="sign.png"');
    }


    header("Content-type: image/png");
    imagepng($temp_pic, $dest_pic);
    imagepng($temp_pic);
    imagedestroy($temp_pic);
    /*
    header('Content-type: image/gif');
    imagegif($temp_pic, $dest_pic);
    imagegif($temp_pic);
    imagedestroy($temp_pic);
    */
    return true;
    }

    ?>

  2. #2
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    per prima cosa inserisci i font e le immagini nelle relative cartelle.
    metti questa funzione in una pagina .php e poi richiami la pagina e gli passi i valori dei parametri delle variabili get relative alla definizione dell'immagine.
    i nomi delle variabili get li trovi nello scirpt.
    ciao
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  3. #3
    Guest

    Predefinito

    Aspe, non ci ho capito molto XD

    Allora in base ai $_GET che ho l'immagine cambia, però se io entro in questa pagina, mi restituisce che l'immagine contiene degli errori!

    Scusate ma sono un pò n00b su queste cose, da poco ho iniziato a usare PHP

  4. #4
    Ospite Guest

    Predefinito

    Codice PHP:
    <?php
    // VALORI DI DEFAULT
    if(empty($_GET['s'])){ $s = 16; }else{ $s=$_GET['s']; }
    if(!isset(
    $_GET['t'])){ $t = "Clicca qui per Modificarmi!"; }else{ $t=$_GET['t']; }
    if(empty(
    $_GET['f'])){ $f = "arial.ttf"; }else{ $f=$_GET['f']; }
    if(empty(
    $_GET['bg'])){ $bg = "0,0,0"; }else{ $bg=$_GET['bg']; }
    if(empty(
    $_GET['c'])){ $c = "0,255,0"; }else{ $c=$_GET['c']; }
    //INSERISCI QUI LA CARTELLA IN CUI CI SONO I FONTS RISPETTO A QUESTO FILE (lascia $f alla fine)
    $f="../fonts/".$f;
    // NON CAMBIARE NULLA
    $size = imagettfbbox($s, 0, $f, $t);
    $xsize = abs($size[0]) + abs($size[2])+4;
    $ysize = abs($size[5]) + abs($size[1])+2;

    $image = imagecreate($xsize, $ysize);
    $colori=explode(",", $bg.",");
    $colore_sfondo = imagecolorallocate($image, $colori[0], $colori[1], $colori[2]);
    $colori=explode(",", $c.",");
    $colore_testo = imagecolorallocate($image, $colori[0], $colori[1], $colori[2]);
    imagettftext($image, $s, 0, 1, abs($size[5])+1, $colore_testo, $f, $t);

    header("content-type: image/png");
    imagepng($image);
    imagedestroy($image);
    ?>
    si richiama così:
    Codice HTML:
    <img src="text2image.php?t={TESTO}&s={DIMENSIONI_TESTO}&f={FILE_DEL_FONT}&bg={COLORE_SFONDO_IN_RGB_0,0,0}&c={COLORE_DEL_TESTO_IN_RGB_0,0,0}" alt="" />

  5. #5
    Guest

    Predefinito

    grazie infinite Matt93 ma io vorrei che si potesse fare sopra degli sfondi da me decisi

    Grazie lo stesso intanto

  6. #6
    Ospite Guest

    Predefinito

    cioè lo vuoi scrivere su un' immagine?

    Codice PHP:
    <?php
    // VALORI DI DEFAULT
    if(empty($_GET['s'])){ $s = 16; }else{ $s=$_GET['s']; }
    if(!isset(
    $_GET['t'])){ $t = "Clicca qui per Modificarmi!"; }else{ $t=$_GET['t']; }
    if(empty(
    $_GET['f'])){ $f = "arial.ttf"; }else{ $f=$_GET['f']; }
    if(empty(
    $_GET['bg'])){ $bg = "http://forum.it.altervista.org/images/standard_background.png"; }else{ $bg=$_GET['bg']; }
    if(empty(
    $_GET['c'])){ $c = "0,255,0"; }else{ $c=$_GET['c']; }
    if(empty(
    $_GET['x'])){ $x = 0; }else{ $y=$_GET['x']; }
    if(empty(
    $_GET['y'])){ $y = 0; }else{ $y=$_GET['y']; }
    //INSERISCI QUI LA CARTELLA IN CUI CI SONO I FONTS RISPETTO A QUESTO FILE (lascia $f alla fine)
    $f="../fonts/".$f;
    // NON CAMBIARE NULLA
    $size = imagettfbbox($s, 0, $f, $t);

    $image = imagecreatefrompng($bg);

    $colori=explode(",", $c.",");
    $colore_testo = imagecolorallocate($image, $colori[0], $colori[1], $colori[2]);
    imagettftext($image, $s, 0, $x, $y, $colore_testo, $f, $t);

    header("content-type: image/png");
    imagepng($image);
    imagedestroy($image);
    ?>
    richiamo:
    Codice HTML:
    <img src="text2image.php?t={TESTO}&s={DIMENSIONI_TESTO}&f={FILE_DEL_FONT}&bg={IMMAGINE_PNG_DELLO_SFONDO}&c={COLORE_DEL_TESTO_IN_RGB_0,0,0}&x={POSIZIONE_X_DEL_TESTO}&y={POSIZIONE_Y_DEL_TESTO}" alt="" />

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •