Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [gd]Creare un "muro" firmabile ovvero scrivere su un immagine

    Come da titolo avrei intenzione di creare un guestbook in php dove i commenti degli utenti vengono salvati su un "muro" ovvero usando le librerie grafiche GDI simile a questo:
    Fino al punto di scrivere testo sulle immagini ci sono arrivato ora il problema è posizionarlo... come calcolo ogni messaggio dove metterlo sul muro? in che posizione?
    Faccio in maniera random oppure c'è un modo logico su come mettere le scritte per evitare che magari 2 scritte si sovrappongano l'un l'altra?
    grazie
    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Carina come idea
    Non so ... trovare un buco vuoto da un immagine deve essere abbastanza complicato se dovessi farlo io
    farei il contrario mapparei l'immagine con vari spazi grandi piccoli storti messi in modo non sovrapposto

    Poi darei la possbilita' all'utente di trovarsi il suo buco se rimane dopo di che mi salverei gli spazi occupati
    da qualche parte cosi via via li tolgo dalla mappatura dell'immagine.

    Cosi facendo sai anche quando il muro e' pieno.
    Dico questo solo nella teoria dovrei studiare un po di cosette per metterlo in pratica :P

    O diversamente mi salverei il muro come sfondo poi ogni scritta come immagini distinta che vado a posizionare
    via html.
    Cosi se fai un algoritmo furbo riesci a posizionarle in modo che non si sovrappongono
    E' magari le fai sbiadire quando diventano vecchie.

    Andrea

  3. #3
    Originariamente inviato da andreamk
    Carina come idea
    Non so ... trovare un buco vuoto da un immagine deve essere abbastanza complicato se dovessi farlo io
    farei il contrario mapparei l'immagine con vari spazi grandi piccoli storti messi in modo non sovrapposto

    Poi darei la possbilita' all'utente di trovarsi il suo buco se rimane dopo di che mi salverei gli spazi occupati
    da qualche parte cosi via via li tolgo dalla mappatura dell'immagine.

    Cosi facendo sai anche quando il muro e' pieno.
    Dico questo solo nella teoria dovrei studiare un po di cosette per metterlo in pratica :P

    O diversamente mi salverei il muro come sfondo poi ogni scritta come immagini distinta che vado a posizionare
    via html.
    Cosi se fai un algoritmo furbo riesci a posizionarle in modo che non si sovrappongono
    E' magari le fai sbiadire quando diventano vecchie.

    Andrea
    Ottima idea... Ora mi ci dedico...

    Ecco la versione che ho fatto finora:
    - Per firmare: http://www.frizzo.altervista.org/muro/fMuro.php
    - Per vedere muro: http://www.frizzo.altervista.org/muro/img/mur.jpeg

    Pero' questa versione non mappa lo spazio ma semplicemente inserisce a random ho fatto solo qualche controllo sulla generazione dei numeri random sulla x per impedire che venga scritto troppo al bordo e quindi tagliato ma nn funzia molto bene...
    Posto solo il codice della pagina che riceve da un form il testo, il colore, il font da usare

    Codice PHP:
    <?php



    //Aquisisco i dati
    if(isset($_POST['font']))$font=$_POST['font'];
    else 
    $err=1;

    if(isset(
    $_POST['colore']))$colore=$_POST['colore'];
    else 
    $err=1;

    if(isset(
    $_POST['testo']))$testo=$_POST['testo'];
    else 
    $err=1;
    if(
    $err==0){

    /*
    Calcolo le coordinate random
    20 pix a carattere cira
    */
    $lung=strlen($testo);
    $max=$lung*24;

    $rotaz=rand(-90,90);
    $x=rand($max,422-$max);
    $y=rand(30,280);


    //Texsto da scrivere
    $testo strtoupper($testo);


    //Importo l'immagine
    $im imagecreatefromjpeg("./img/mur.jpeg");

    //Decido il colore in base al parametro passato
    if($colore=='rosso')$color imagecolorallocate($im400004005);
    else if(
    $colore=='verde')$color imagecolorallocate($im0x000x990x00);
    else if(
    $colore=='giallo')$color imagecolorallocate($im0xFF0xFF0x00);
    else if(
    $colore=='bianco')$color imagecolorallocate($im0xFF0xFF0xFF);
    else if(
    $colore=='nero')$color imagecolorallocate($im0x000x000x00);
    else if(
    $colore=='blu')$color imagecolorallocate($im0x000x330xFF);

    //Decido il font
    $font "./img/$font";

    //Stampo la scritta
    imagettftext($im11$rotaz$x$y$color$font$testo);


    //Salvo
    imagejpeg($im,"./img/mur.jpeg");

    imagedestroy($im);
    echo 
    "Messaggio inserito <a href=\"./img/mur.jpeg\">Visualizza</a>";
    }
    else echo 
    "Errore non hai compilato tutti i campi";
    ?>
    Nella parte dove calcolo le coordinate random mi sa che ho fatto un po di casino...

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Ribadisco che cosi non ce la fai ... tu scrivi l'immagine con le scrittre e una volta inserite non hai piu traccia della loro posizione.
    Devi salvarti le scritte in modo distinto e poi farle vedere in base a una logica.

    Io consiglio di usare l'html/css per posizionarle in modo assoluto dove vuoi tu.

    Parti da una cosa semplice toglia la rotazione creati le immagini con le scritte e scrivile tutte una dopo l'altra.
    poi ci vai dietro.


    Andrea

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.