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

    creazione immagini con inserimento testo

    Buongiorno,

    sto proseguendo il duro lavoro da autodidatta della creazione di un WMS per la mia azienda. Sono arrivato al punto in cui voglio "renderizzare" (uso impropriamente questa parola) l'impilamento del materiale sui pallet.
    Io inserisco la dimensione del pallet, la dimensione del materiale e la disposizione su di esso, vorrei che php mi costruisca l'immagine e ci scriva dentro.
    Vi allego un'immagine di esempio.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    qual è la domanda?

    Cmq se l'idea è avere un sistema "a moduli" potresti creare:
    - un'immagine di base generica da usare come "sfondo"
    - una cartella con i moduli ripetibili
    - usi le GD per comporre i moduli sovrapponendoli a un'immagine unica e sovrappore i testi

  3. #3
    Si scusa, sono un po' sfasato.

    Pure io avevo pensato ad un'immagine di sfondo, ma ho più tipologie di bancali e quindi dovrei fare un'immagine per ognuna di esse.
    Ho pensato di costruire un form in cui inserisco i dati tipo:
    1. Dimensione del pallet
    2. Dimensione dei pannelli
    3. Disposizione di accatastamento e posizione sul pallet

    Ad esempio (come nell'immagine sopra):
    1. 1200x800x170 pesante (e mi disegna in marrone il pallet)
    2. 447x236x18 (e mi disegna in bianco con contorni neri il pannello)
    3. 2 righe del 447 sul 1200 e 3 righe del 236 sull'800 del pallet altezza 1100 totale(e lo script, mi posiziona a partire dal centro del pallet le (2*3=6) 6 cataste

    So che esistono le librerie GD, ma non le ho mai utilizzate/studiate. Avete qualche script di riferimento?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi partire da questa funzione e dal primo esempio...

  5. #5
    Eccomi, sono riuscito a partorire qualcosa:
    Codice PHP:
    <?php
    if(isset($_POST['submit'])&&($_POST['submit']=="Invia"))
        {
        if(isset(
    $_POST['mis_fin_lun']))
            {
            
    // supponiamo 3200
            
    $mis_fin_lun addslashes(filter_var($_POST['mis_fin_lun'], FILTER_SANITIZE_STRING));
            
    $testo_mis_fin_lun $mis_fin_lun;
            }
        if(isset(
    $_POST['mis_fin_lar']))
            {
            
    // supponiamo 1400
            
    $mis_fin_lar addslashes(filter_var($_POST['mis_fin_lar'], FILTER_SANITIZE_STRING));
            
    $testo_mis_fin_lar $mis_fin_lar;
            }
            
    // imposto i parametri max di visualizzazione
    $max_size_larg 600;    // in pixel
    $max_size_alt 600//in pixel
    $bordo 5;

    // mis_fin_lun = max_size_larg || mis_fin_lar = max_size_alt
    if($mis_fin_lun $max_size_larg)
        {
        
    $op1 $mis_fin_lun $max_size_larg// 3200/400=8mm/px
        
    $op1a $mis_fin_lun $op1// 3200/8=400px
        
    $op2 $mis_fin_lar $op1// 1400/8=175px
        
    $mis_fin_lun $op1a// 3200->400
        
    $mis_fin_lar $op2// 1400->175
        
    if($op2 $max_size_alt)
            {
            
    $op3 $mis_fin_lar $max_size_alt// 1400/160=8,75mm/px
            
    $op3a $mis_fin_lar $op3// 1400/8,75=160px
            
    $op4 $mis_fin_lun $op3// 3200/8,75=365px
            
    $mis_fin_lun $op4// 3200->365
            
    $mis_fin_lar $op3a// 1400->160
            
    }
        }elseif(
    $mis_fin_lar $max_size_alt){
        
    $op6 $mis_fin_lar $max_size_alt// 1400/160=8,75
        
    $op6a $mis_fin_lar $op6// 1400/8,75=160
        
    $op7 $mis_fin_lun $op6// 3200/8,75=365
        
    $mis_fin_lun $op7;
        
    $mis_fin_lar $op6a;
        }else{
        }

    $size_testo 5;

    // testo centrato con l'immagine
    $px_testo imagefontwidth($size_testo); // misuro la dimensione del font
    $larghezza_lun strlen($mis_fin_lun); // misuro il numero di caratteri del font
    $larghezza_lar strlen($mis_fin_lar);
    $larghezza_px_lun $px_testo $larghezza_lun;
    $larghezza_px_lar $px_testo $larghezza_lar;

    $testo_cent_lun = ($mis_fin_lun $bordo)-((($mis_fin_lun $bordo)/2)-($bordo/2));
    $testo_cent_lar = ($mis_fin_lar $bordo)-((($mis_fin_lar $bordo)/2)-($bordo/2));

    //$testo_cent_lun = ($mis_fin_lun + $bordo + $bordo) / 2;
    //$testo_cent_lar = ($mis_fin_lar + $bordo + $bordo) / 2;

    /*if($mis_fin_lun < $larghezza_px_lun)
        {
        $mis_fin_lun = $larghezza_px_lun;
        $testo_cent_lun = (($mis_fin_lun + $bordo) / 2);
        }
    if($mis_fin_lar < $larghezza_px_lar)
        {
        $mis_fin_lar = $larghezza_px_lar;
        $testo_cent_lar = (($mis_fin_lar + $bordo + $bordo) / 2);
        }
    */

    $img imagecreatetruecolor($mis_fin_lun $bordo$mis_fin_lar $bordo);
    $white imagecolorallocate($img255255255);
    $red imagecolorallocate($img255000000);
    $green imagecolorallocate($img000255000);
    $blue imagecolorallocate($img000000255);
    $black imagecolorallocate($img000000000);
    imagefilledrectangle($img$bordo$bordo$mis_fin_lun$mis_fin_lar$white);
    $colore_testo $blue;

    imagestring($img,$size_testo,$testo_cent_lun,5,$testo_mis_fin_lun,$colore_testo); // orizzontale
    imagestringup($img,$size_testo,5,$testo_cent_lar,$testo_mis_fin_lar,$colore_testo); // verticale

    imagejpeg($img"image/img.jpg");
    imagedestroy($img);
    echo 
    "<img src=\"image/img.jpg\"></img>";
    echo 
    "
    "
    ;

    }else{
    echo 
    "<form action="$_SERVER['PHP_SELF'] ." method=\"post\">";

    echo 
    "Misura finita: ";
    echo 
    "<input name=\"mis_fin_lun\" value=\"lunghezza\" type=\"text\" maxlength=\"7\" size=\"7\">";
    echo 
    "<input name=\"mis_fin_lar\" value=\"larghezza\" type=\"text\" maxlength=\"7\" size=\"7\">";
    echo 
    "(prima misura senso vena)";
    echo 
    "
    "
    ;

    echo 
    "<input name=\"submit\" type=\"submit\" value=\"Invia\">";
    echo 
    "</form>";
    }
    ?>
    Il mio problema ora è che non riesco a centrare perfettamente il testo nell'immagine .... qualche suggerimento?
    Ho provato di tutto, ho giocato con
    Codice PHP:
    $testo_cent_lun = ($mis_fin_lun $bordo)-((($mis_fin_lun $bordo)/2)-($bordo/2));
    $testo_cent_lar = ($mis_fin_lar $bordo)-((($mis_fin_lar $bordo)/2)-($bordo/2));

    //$testo_cent_lun = ($mis_fin_lun + $bordo + $bordo) / 2;
    //$testo_cent_lar = ($mis_fin_lar + $bordo + $bordo) / 2;

    /*if($mis_fin_lun < $larghezza_px_lun)
        {
        $mis_fin_lun = $larghezza_px_lun;
        $testo_cent_lun = (($mis_fin_lun + $bordo) / 2);
        }
    if($mis_fin_lar < $larghezza_px_lar)
        {
        $mis_fin_lar = $larghezza_px_lar;
        $testo_cent_lar = (($mis_fin_lar + $bordo + $bordo) / 2);
        }
    */ 
    ma non ho ottenuto risultati soddisfacenti ...

  6. #6
    Sistemato anche se il tutto è molto macchinoso.
    Centrato il testo ed aggiunto la dimensione minima di visualizzazione dell'immagine. Se a qualcuno serve

    Codice PHP:
    <?php
    if(isset($_POST['submit'])&&($_POST['submit']=="Invia"))
        {
        if(isset(
    $_POST['mis_fin_lun']))
            {
            
    $mis_fin_lun addslashes(filter_var($_POST['mis_fin_lun'], FILTER_SANITIZE_STRING));
            
    $testo_mis_fin_lun $mis_fin_lun;
            }
        if(isset(
    $_POST['mis_fin_lar']))
            {
            
    $mis_fin_lar addslashes(filter_var($_POST['mis_fin_lar'], FILTER_SANITIZE_STRING));
            
    $testo_mis_fin_lar $mis_fin_lar;
            }
    // imposto i parametri max di visualizzazione
    $max_size_larg 600;
    $max_size_alt 600;
    $bordo 25;

    if(
    $mis_fin_lun $max_size_larg)
        {
        
    $op1 $mis_fin_lun $max_size_larg;
        
    $op1a $mis_fin_lun $op1;
        
    $op2 $mis_fin_lar $op1;
        
    $mis_fin_lun $op1a;
        
    $mis_fin_lar $op2;
        if(
    $op2 $max_size_alt)
            {
            
    $op3 $mis_fin_lar $max_size_alt;
            
    $op3a $mis_fin_lar $op3;
            
    $op4 $mis_fin_lun $op3;
            
    $mis_fin_lun $op4;
            
    $mis_fin_lar $op3a;
            }
        }elseif(
    $mis_fin_lar $max_size_alt){
        
    $op6 $mis_fin_lar $max_size_alt;
        
    $op6a $mis_fin_lar $op6;
        
    $op7 $mis_fin_lun $op6;
        
    $mis_fin_lun $op7;
        
    $mis_fin_lar $op6a;
        }else{
        }

    $size_testo 5;

    // testo centrato con l'immagine
    $px_testo imagefontwidth($size_testo);
    $larghezza_lun strlen($testo_mis_fin_lun);
    $larghezza_lar strlen($testo_mis_fin_lar);
    $larghezza_px_lun $px_testo $larghezza_lun;
    $larghezza_px_lar $px_testo $larghezza_lar;

    if(
    $mis_fin_lun $larghezza_px_lun)
        {
        
    $mis_fin_lun 50;
        }
    if(
    $mis_fin_lar $larghezza_px_lar)
        {
        
    $mis_fin_lar 50;
        }

    $testo_cent_lun = ((($mis_fin_lun $bordo)/2) - ($larghezza_px_lun/2));
    $testo_cent_lar = ((($mis_fin_lar $bordo)/2) + ($larghezza_px_lar/2));

    $sfondo_x $mis_fin_lun $bordo;
    $sfondo_y $mis_fin_lar $bordo;

    $img imagecreatetruecolor($sfondo_x$sfondo_y);
    $white imagecolorallocate($img255255255);
    $red imagecolorallocate($img255000000);
    $green imagecolorallocate($img000255000);
    $blue imagecolorallocate($img000000255);
    $black imagecolorallocate($img000000000);
    imagefilledrectangle($img$bordo$bordo$mis_fin_lun$mis_fin_lar$white);
    $colore_testo $white;

    imagestring($img,$size_testo,$testo_cent_lun,5,$testo_mis_fin_lun,$colore_testo);
    imagestringup($img,$size_testo,5,$testo_cent_lar,$testo_mis_fin_lar,$colore_testo)

    imagejpeg($img"image/img.jpg");
    imagedestroy($img);
    echo 
    "<img src=\"image/img.jpg\"></img>";
    echo 
    "
    "
    ;

    }else{
    echo 
    "<form action="$_SERVER['PHP_SELF'] ." method=\"post\">";

    echo 
    "Misura finita: ";
    echo 
    "<input name=\"mis_fin_lun\" value=\"lunghezza\" type=\"text\" maxlength=\"7\" size=\"7\">";
    echo 
    "<input name=\"mis_fin_lar\" value=\"larghezza\" type=\"text\" maxlength=\"7\" size=\"7\">";
    echo 
    "(prima misura senso vena)";
    echo 
    "
    "
    ;

    echo 
    "<input name=\"submit\" type=\"submit\" value=\"Invia\">";
    echo 
    "</form>";
    }
    ?>

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.