Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di nourdine
    Registrato dal
    Nov 2005
    Messaggi
    1,130

    Gd e colori che non funzionano

    ho un problema con GD. in pratica lo script non mi usa i colori allocati per la generazione di immaghini e testo random. Al posto dei colori che potrebbe (e dovrebbe) scegliere a caso da un array adopera sempre il nero. Ecco il codice:
    codice:
    <?php
    
    // imposto gli header 
    header("Content-type: image/png");
    
    // istanzio una nuova immagine di dimensioni x=200 e y=300 
    $immagine = imagecreatetruecolor(300, 180); 
    
    // assegno il primo colore, questo colore sarà anche lo sfondo dell'immagine - COSA STRANA: LO USA ANCHE PER I RETTANGOLI E LE SCRITTE (VEDI IN SEGUITO) 
    $sfondo = imagecolorallocate($immagine, 255, 255, 170); 
    
    // copro lo sfondo nero dell'immagine
    imagefilledrectangle($immagine, 0, 0, 300, 180, $sfondo);
    
    // qui istanzio il nero - COSA STRANA: LO USA ANCHE PER I RETTANGOLI E LE SCRITTE (VEDI IN SEGUITO)
    // $black = imagecolorallocate($immagine, 0, 0, 0); 
    
    // salvo in un array altri colori da utilizzare per le immagini random che creeranno confusione (noise) 
    $blue = imagecolorallocatealpha($immagine, 150, 150, 250, 0);
    $purple = imagecolorallocatealpha($immagine, 190, 120, 190, 0);
    $green = imagecolorallocatealpha($immagine, 110, 240, 110, 0);
    $orange = imagecolorallocatealpha($immagine, 250, 160, 140, 0);
    $colors = array($blue, $purple, $green, $orange);
    
    // rettangoli casuali e noise letterale
    for ($n = 1; $n <= 10; $n++){
    // parametri casuali ellisse 
    $x1 = rand(0, 300);
    $y1 = rand(0, 180);
    $x2 = rand(0, 300);
    $y2 = rand(0, 180);
    $col1 = array_rand($colors);
    // parametri casuali parole noise
    $x_noise = rand(0, 300);
    $y_noise = rand(0, 180);
    $angle_noise = rand(0, 360);
    $size_noise = rand(20, 70);
    $col2 = array_rand($colors);
    
    // creo i rettangoli
    imagefilledrectangle($immagine, $x1, $y1, $x2, $y2, $col1); 
    
    // creo i le scritte confondenti
    imagettftext($immagine, $size_noise, $angle_noise, $x_noise, $y_noise, $col2, "font1.ttf", "noise");
    } 
    
    // invio l'output come immagine PNG 
    imagepng($immagine); 
    
    // libero la memoria 
    imagedestroy($immagine); 
    
    ?>

  2. #2
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    non riesco a trovare l'inghippo, il tuo script mi da questo errore:

    L'immagine “http://127.0.0.1/img.php” non può essere visualizzata poiché contiene degli errori.
    Errare humanum est, perseverare ovest

  3. #3
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    vedi se trovi spunto da questo script:

    Codice PHP:
    <?php
    header
    ("Content-type: image/png") ;


    # funzioni per la trasformazione dei colori da esadecimale a rgb

    function r($valore) {
    $valore hexdecsubstr$valore ) ) ;
    return 
    $valore;
    }

    function 
    g($valore) {
    $valore hexdecsubstr$valore ) ) ;
    return 
    $valore;
    }

    function 
    b($valore) {
    $valore hexdecsubstr$valore ) ) ;
    return 
    $valore;
    }


    # *********************************************
    #
    # creazione immagine con dimensioni
    #
    # *********************************************

    $img imageCreateTrueColor80 80 ) ;



    # *********************************************
    #
    # colori utilizzati 
    #
    # *********************************************

    $colori[] = "CCFF99" ;
    $colori[] = "99CC66" ;
    $colori[] = "669933" ;
    $colori[] = "99FF33" ;
    $colori[] = "66CC00" ;
    $colori[] = "CCFF66" ;
    $colori[] = "99CC33" ;
    $colori[] = "CCFF00" ;
    $colori[] = "CCFFCC" ;
    $colori[] = "99FF99" ;
    $colori[] = "66FF66" ;
    $colori[] = "99CC99" ;
    $colori[] = "66CC66" ;
    $colori[] = "66FF99" ;
    $colori[] = "00CC33" ;
    $colori[] = "00FF66" ;


    # *********************************************
    #
    #   creazione rettangoli
    #
    # *********************************************

    for ( $y $y <= $y++ ) {

    $y1 $y 10 ;
    $y2 $y1 10 ;

    srand((float)microtime() * 1000000) ;
    shuffle($colori) ;

    for ( 
    $x $x <= $x++ ) {

    $x1 $x 10 ;
    $x2 $x1 10 ;

    $colore $colori[$x] ;

    $r r($colore) ;
    $g g($colore) ;
    $b b($colore) ;

    $colore_rettangolo ImageColorAllocate$img $r $g $b ) ;
    imageFilledRectangle$img $x1 $y1 $x2 $y2 $colore_rettangolo ) ;

    # fine for x
    # fine for y


    # *********************************************
    #
    #   reticolo puntini
    #
    # *********************************************

    $colore "FF9933" # esadecimale
    $r r($colore) ;
    $g g($colore) ;
    $b b($colore) ;

    # linee orizzontali
    for ( $y $y <= 80 $y $y 10 ) {
    for ( 
    $x $x <= 80 $x $x ) {
    $colore_punto ImageColorAllocate$img $r $g $b ) ;
    imagesetpixel$img $x $y $colore_punto ) ;
    # fine ciclo for punti x
    # fine ciclo for punti y

    # linee verticali
    for ( $x $x <= 80 $x $x 10 ) {
    for ( 
    $y $y <= 80 $y $y ) {
    $colore_punto ImageColorAllocate$img $r $g $b ) ;
    imagesetpixel$img $x $y $colore_punto ) ;
    # fine ciclo for punti x
    # fine ciclo for punti y


    # invio l'output come immagine PNG
    imagePng($img) ;

    # libero la memoria
    imageDestroy($img) ;

    ?>
    il cui risultato è visibile all'indirizzo http://www.predizione.it/img_rnd

    Errare humanum est, perseverare ovest

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.