Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: implementazione resize

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    53

    implementazione resize

    salve a tutti è da qualche giorno che ho deciso di implementare il resize delle foto caricate dagli utenti iscritti ad una community che sto creando.
    In pratica ho una pagina modifica_profilo.php dalla quale è possibile fare l'upload dell'immagine da associare al proprio profilo utilizzando il seguente cosice:
    Codice PHP:
    <?
    include_once("include/config.php");
    include_once(
    "include/auth.lib.php");
    include_once(
    "include/reg.lib.php");

    list(
    $status$user) = auth_get_status();

    if (
    $status == AUTH_LOGGED){

    if ((isset(
    $_GET["id"])) AND ($prof get_profilo($user["id_user"]))){
    ?>
    // ...segue codice html

    <?    
    if ((isset($_POST["Submit"])) AND ($_POST["Submit"]=="Invia")){

    $ok true;
    $foto_name $_FILES["Foto"]["name"];
    if (
    $foto_name == " ") {
    $endresult "Nessuna foto selezionata.";
    $ok false;
    }else{
    $ext strrchr($foto_name,'.');
    if ((
    $ext != ".gif") AND ($ext != ".jpg") AND ($ext != ".jpeg") ) {
    $endresult "La foto ha un estensione non consentita.";
    $ok false;
    }else{
    if(@
    is_uploaded_file($_FILES["Foto"]["tmp_name"])) { 
    if ((
    $user["foto"] != '') AND( file_exists($_CONFIG["path_foto"].$user["foto"]))){
    $successo unlink($_CONFIG["path_foto"].$user["foto"]) or die ("Errore");
    }
    @
    move_uploaded_file($_FILES["Foto"]["tmp_name"], $_CONFIG["path_foto"].$user["id_user"].$ext) or $endresult "Impossibile caricare la foto per un errore interno al server."
    }}}
    $ret reg_check_data($_POST);
    if (
    $ok){
    $status = ($ret === true) ? reg_mod_register($_POST,$_GET["id"],$user["id_user"].$ext) : REG_ERRORS;
    }else{
    $status = ($ret === true) ? reg_mod_register($_POST,$_GET["id"],'') : REG_ERRORS;
    }
    echo 
    "<tr><td class='cellasezioni' align='center'>";
    switch(
    $status){
    case 
    REG_ERRORS:?>
    <?php
    foreach($ret as $error)
    printf("[b]%s[/b]: %s
    "
    $error[0], $error[1]);?>

    Premere "indietro" per modificare i dati
    <?php 
    break; 
    case 
    REG_FAILED:
    echo 
    "Modifica Fallita a causa di un errore interno.";
    break;
    case 
    REG_SUCCESS:
    header("Refresh: 3;URL=home.php".$link."&p=profilo&id=".$_GET["id"]."&update=y");
    if (
    $ok){
    echo 
    "Foto caricata con successo.
    "
    ;
    }else{
    echo 
    $endresult."
    "
    ;
    }
    echo 
    "Modifica dati profilo avvenuta con successo.";
    break;
    }
    echo 
    "</td></tr>";
    }else{
    ?>
    la funzione che mi permette di effettuare l'upload è la seguente:
    Codice PHP:
    function uploadFile($path$file$arr){
    $ok=true;
    $endresult="";
    $foto_name $file["name"];
    $size $file["size"]/1600;
    if (
    $foto_name == "") {
    $endresult "Nessuna file selezionato.";
    $ok false;
    }else{
    $ext explode('.'$foto_name);
    $pos sizeof($ext) - 1;
    if (!
    in_array($ext[$pos],$arr)) {
    $endresult "Il File ha un estensione non consentita.";
    $ok false;
    }else{
    if(
    $size>1600){
    $endresult "Il File è troppo grande. Riprova con uno più piccolo.";
    $ok false;
    }else{
    if(@
    is_uploaded_file($file["tmp_name"])) {
    $path_foto $path.$foto_name;
    if (
    file_exists($path_foto)){
    $endresult "Il File già esiste. Prova a rinominarlo.";
    $ok false;
    }else{
    if(@
    move_uploaded_file($file["tmp_name"], $path_foto)){
    $oktrue;
    $endresult "File caricato correttamente.";
    }else{
    $endresult "Impossibile caricare il file per un errore interno al server.";
    $okfalse;
    //FINE IF move_upload
    }// FINE IF FILE GIà ESISTENTE
    }// FINE IF is_uploaded
    }// FINE IF $size        
    }// FINE IF estensione
    }// FINE IF $foto_name
    return array($ok,$endresult,$foto_name);    

    in questo modo le foto caricate vanno nella cartella pubblic ed inoltre il nome del file caricato vinee cambiato con l'id dell'utente
    il form per modificare il profilo è il seguente:

    Codice PHP:
    <form action="home.php<?=$link?>&amp;p=mod_profilo&amp;id=<? echo $_GET["id"];?>" method="post" enctype="multipart/form-data" name="form1">
    <table width="96%" border="0" align="center" cellpadding="0" cellspacing="3">
    <tr valign="top"> 
    <td width="247"> <table width="63%" border="0" align="center" cellpadding="0" cellspacing="3">
    <tr> 
    <td align="center"height="150">
    <? if (($prof["foto"]!='') AND (file_exists($_CONFIG["path_foto"].$prof["foto"]))){ ?>
    [img]<? echo [/img]" width="150" height="150" alt="">
    <? }else{ echo ""; } ?>
    </td>
    </tr>
    </table></td>
    <td width="
    266"> <table width="100%" border="0" align="right" cellpadding="0" cellspacing="3">
    <tr> 
    <td>INFORMAZIONI UTENTE</td>
    </tr>
    <tr> 
    <td> 
    <table width="
    100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="
    52%"><div align="left">[b]Nome:[/b]</div></td>
    <td width="
    48%"><div align="right">
    <input name="
    Nome" type="text" value="<?=$prof['name']?>">
    </div></td>
    </tr>
    <tr>
    <td><div align="left">[b]Cognome:[/b]</div></td>
    <td><div align="right">
    <input name="Cognome" type="text" value="<?=$prof['surname']?>">
    </div></td>
      </tr>
      <tr>
    <td><div align="left">[b]Città:[/b]</div></td>
    <td><div align="right">
    <input name="Citta" type="text" value="<?=$prof['localita']?>"></div></td>
     </tr>
      <tr>
    <td><div align="left">[b]Data di Nascita:[/b]</div></td>
    <td>
     <div align="right">
    <? $data_m explode("-",$prof["datanascita"]);?>
    <input name="Datanascita" type="text" value="<? echo $data_m[2]."/".$data_m[1]."/".$data_m[0];?>">
    </div></td>
     </tr>
     <tr>
    <td><div align="left">[b]Sesso:[/b]</div></td>
    <td><div align="right">
    <input name="Sesso" type="radio" value="m"  <? if ($prof["sesso"] == "m"){ echo "checked"; }?>>
      M 
     <input type="radio" name="Sesso" value="f"  <? if ($prof["sesso"] == "f"){ echo "checked"; }?>>
      F</div></td>
      </tr>
     <tr>
    <td><div align="left">[b]E-Mail:[/b]</div></td>
    <td><div align="right">
      <input name="Email" type="text" id="Email2" value="<?=$prof['email']?>">
      </div></td>
      </tr>
    <tr>
    <td><div align="left">[b]Password:[/b]</div></td>
                            <td><div align="right">
                              <input name="Password" type="text" id="Password2" value="<?=$prof['PASSWORD']?>">
                              </div></td>
                          </tr>
                        </table>
                        
                      </td>
                    </tr>
                  </table>
                
     </tr>
              <tr valign="top"> 
                <td colspan="2" align="right"><table width="100%" border="0" cellspacing="3" cellpadding="0">
                    <tr> 
                      <td width="41%" valign="top"></td>
                      <td width="59%" valign="top">DESCRIZIONE:</td>
                    </tr>
                    <tr> 
                      <td height="83" colspan="2" align="center" valign="top"> <div align="right">
                        <textarea name="Descrizione" cols="40" rows="5"><? echo estrazione_dati($prof["descrizione"]); ?></textarea>
                      </div></td>
                    </tr>
                </table></td>
              </tr>
              <tr align="right" valign="top">
                <td colspan="2">
                  <table width="100%" border="0" cellspacing="3" cellpadding="0">
                    <tr> 
                      <td width="41%" valign="top"><div align="left"></div></td>
                      <td width="59%" valign="top">FOTO:</td>
                    </tr>
                    <tr> 
                      <td colspan="2" align="right" valign="top"><input name="Foto" type="file" id="Foto" size="40">                  </td>
                    </tr>
                  </table></td>
              </tr>
              <tr align="right" valign="top"> 
                <td colspan="2"> <input type="submit" name="Submit" value="Invia"> 
                </td>
              </tr>
            </table>
        </form>
    A questo punto sapreste indicarmi come devo agire per poter modificare il codice.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    53
    Spulciando un po a destra e manca sono arrivato a questa soluzione ma non funge?
    Codice PHP:
    <?
    include_once("include/config.php");
    include_once(
    "include/auth.lib.php");
    include_once(
    "include/reg.lib.php");
    include_once(
    "include/gd.php");
    include_once(
    "include/function.php");
    list(
    $status$user) = auth_get_status();

    if (
    $status == AUTH_LOGGED){

    if ((isset(
    $_GET["id"])) AND ($prof get_profilo($user["id_user"]))){
    ?>
     

                      <?
                        
                        
    if ((isset($_POST["act"])) AND ($_POST["act"] == "ok")){
                            
                        
    $size "800000"//What do you want size limited to be if there is one
                        
    $id $_POST["id_user"];
                        
                        
    //all image types to upload
                        
    $cert1 "jpg"//Jpeg type 1
                        
    $cert2 "jpeg"//Jpeg type 2
                        
    $cert3 "gif"//Gif type
                        
                        //percorso della cartella dove mettere i file caricati
                        
    $uploaddir '../community/public/utenti/';
                        
    $uploaddir_thumb '../community/public/thumb/';
                        
                        
    //Recupero il percorso temporaneo del file
                        
    $userfile_tmp $_FILES['Foto']['tmp_name'];
                        
                        
    //recupero il nome originale del file caricato
                        
                        
                        
    $userfile_name $_FILES['file']['name'];
                        
                        if (
    $userfile_name == "") {
                            echo 
    "<div class='grassettoarancio' align='center'>
    Nessun file selezionato.
    </div>
    "
    ;
                        }else{
                        
    $ext explode('.'$userfile_name);
                        
                        
    $pos sizeof($ext) - 1;
                        
                        
    $userfile_name $id.'.'.$ext[$pos];
                        
                        
    $userfile_type $ext[$pos];
                        
                        
    $img1_size $_FILES['file']['size'];
                        
                        list(
    $w,$h) = dimimage($userfile_tmp);
                
        
                        if ((
    $img1_size $size) OR ($w 1024) OR ($h 1024)) {
                            echo 
    "<div class='grassettoarancio' align='center'>
    Il file ha una dimensione troppo grande.
    </div>
    "
    ;
                        }else{
                            
    //Checks if file is an image
                            
                        
    if (($userfile_type != $cert1) AND ($userfile_type != $cert2) AND ($userfile_type != $cert3)){
                            
                            echo 
    "<div class='grassettoarancio' align='center'>
    Il File non ha un'estensione consentita.
    </div>"
    ;
                        }else{
                        
                        
    //Cancella foto vecchia
                            
    if(($_POST["foto"]!="")AND(file_exists($uploaddir.$_POST["foto"]))){
                                
    unlink($uploaddir.$_POST["foto"]);
                                
    unlink($uploaddir_thumb.$_POST["foto"]);
                            }
    // FINE IF CANCELLAZIONE FILE
                            
                        //copio il file dalla locazione temporanea alla mia cartella upload
                        
    if (move_uploaded_file($userfile_tmp$uploaddir $userfile_name))
                        {
                        
    //Se l'operazione è andata a buon fine...
                            
                            
                            
                            //echo $uploaddir.$userfile_name." ".$uploaddir."thumb/".$userfile_name;
                            
    thumb($uploaddir.$userfile_name,$uploaddir_thumb.$userfile_name,100);
                            
                            
                            echo 
    "<div class='grassettoarancio' align='center'>
    Foto caricata!!!
    </div>"

                            
    $sql="update utenti set foto = '$userfile_name' where id = $id";
                            
    $result rs_comm($sql);
                        }
                        else
                        {
                        
    //Se l'operazione è fallta...
                        
    echo "<span class='messaggi' align='center'>
    Operazione Fallita!!!
    </span>"

                        
    //print_r($_FILES);
                        
    }
                        
                        }
                        }
                        }
                    }else{
                        
    $sql"SELECT Foto FROM utenti WHERE id = ".$_GET["id"]."";
                        
    $result rs_select($sql);
                        
    $rs mysql_fetch_array($result);
                    
    ?>
                      <table width="96%" border="0" align="center" cellpadding="0" cellspacing="0" class="sezcenter">
                        <tr> 
                          <td height="20" class="blu"><span class="grassettoarancio">Modifica 
                            logo </span></td>
                        </tr>
                        <tr> 
                          <td><form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
                              <table width="98%" border="0" align="center" cellpadding="2" cellspacing="2">
                                <tr> 
                                  <td></td>
                                  <td></td>
                                </tr>
                                <tr> 
                                  <td>Logo Attuale:</td>
                                  <td align="center">
                                    <?
                                
                                
    if ($rs["foto"] != ""){ 
                                  list(
    $wt,$ht) = dimimage('../community/public/thumb/'.$rs["foto"]);
                                  list(
    $w,$h) = dimimage('../community/public/utenti/'.$rs["foto"]);
                                  
    $w $w 20;
                                  
    $h $h 90
                                    echo 
    "<a href=\"javascript:popUpWindow('../view_foto.php?file=".$rs["foto"]."', '50', '50', '$w', '$h')\" >[img]../community/public/thumb/".$rs["foto"]."[/img]</a>";
                                }else{
                                    echo 
    "[img]../community/public/thumb/empty.gif[/img]";
                                }
                                  
    ?>
                                    <input name="logo" type="hidden" value="<? echo $rs["foto"]; ?>" /> 
                                  </td>
                                </tr>
                                <tr> 
                                  <td colspan="2" class="trattoGiallo"></td>
                                </tr>
                                <tr> 
                                  <td>File:</td>
                                  <td><input name="file" type="file" id="file" size="35" /></td>
                                </tr>
                                <tr> 
                                  <td colspan="2" class="trattoGiallo"></td>
                                </tr>
                                <tr> 
                                  <td></td>
                                  <td align="right"><input name="id_ass" type="hidden" id="id_ass" value="<? echo $_GET["id"];?>" />
                                    <input name="act" type="hidden" id="act" value="ok" /> 
                                    <input name="imageField2" type="image" src="../img/tasto_modifica.gif" width="64" height="13" border="0" /> 
                                  </td>
                                </tr>
                              </table>
                            </form></td>
                        </tr>
                        <tr> 
                          <td height="20" class="blu"></td>
                        </tr>
                      </table>
                      <? ?>
                      

    <?
    }
    }else{
    header("Refresh: 3;URL=home.php");
    echo 
    '<div align="center">NON Sei connesso ... ... </div>';
    }
    ?>
    sapreste indicarmi dove sbaglio ? Grazie

  3. #3
    Il contenuto di $_FILES['file']['size'] non riguarda le dimensioni in pixel ma in kb.

    Per quello che serve a te, devi usare la funzione getimagesize(), anche perché io dimimage(), che usi nel tuo script, non l'ho trovata neanche nel manuale ufficiale.

    Per cui, ecco la lista di informazioni che estrai da una immagine con la funzione che ti ho dato io.

    Codice PHP:
    list($width$height$type$attr) = getimagesize("cartella/immagine.jpg"); 
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    53
    grazie alcio74 proverò a modificare e ti farò sapere come è andata.
    Ad ogni modo la funzione dimimage che utilizzavo la richiamo dal file gd.php
    Codice PHP:
    function dimimage($src){
        
    $fullsize getimagesize($src);
          if( 
    $fullsize[2] == ){$im = @imagecreatefromjpeg($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefromgif($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefrompng($src);}
        
        
    $fullsize_height=$fullsize[1];
        
    $fullsize_width=$fullsize[0];
        
    imagedestroy($im);
        return array(
    $fullsize_width,$fullsize_height);

    proverò cmq anche nel modo che tu mi hai indicato solo che a me serve che la foto caricata dall'utente venga salavata nella cartella pubblic ed automaticamente devo fare in modo che si crei una thumbnail rinominata in "id_user.jpg" a sua volta salvata nella cartella thumb.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    53
    Ho provato il codice su server linux con le librerie gd attive hosting aruba ma compare questo errore sapreste indicarmi il motivo e dove sbaglio?
    imagedestroy(): supplied argument is not a valid Image resource in /web/htdocs/www.xxx.it/home/community/include/gd.php on line 115

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    53
    Allora dopo tanti tentativi sono riuscito ad implementare il resize ma adeso succede una cosa che propriol non riesco a capire.
    In pratica quando effettuo il download della mia immagine mi compare la foto ridimensionata in peso e misura. ora volendo cambiare l'immagine caricata in precedenza provo a caricare una nuova foto ma compare nel profilo sempre la stessa immagine (cioè quella iniziale ho controllato sul server e le foto nella cartella thumb e utenti effettivamente cambiano. quale potrebbe essere il problema '
    vi poosto il codice utilizzato per l'upload ed il resize.
    Premetto che ho provato a sostituire la funzione unlink con imagedestroy ma da sempre lo stesso problema.
    Codice PHP:
    <?
    include_once("include/config.php");
    include_once(
    "include/auth.lib.php");
    include_once(
    "include/reg.lib.php");
    include_once(
    "include/gd.php");
    include_once(
    "include/function.php");

    list(
    $status$user) = auth_get_status();

    if (
    $status == AUTH_LOGGED){

    if ((isset(
    $_GET["id"])) AND ($prof get_profilo($user["id_user"]))){
    ?>

    <?
    if ((isset($_POST["act"])) AND ($_POST["act"] == "ok")){
    $size "800000"//What do you want size limited to be if there is one
    $id $_POST["id_user"];
                        
    //all image types to upload
    $cert1 "jpg"//Jpeg type 1
    $cert2 "jpeg"//Jpeg type 2
    $cert3 "gif"//Gif type
                        
    //percorso della cartella dove mettere i file caricati
    $uploaddir '../community/public/utenti/';
    $uploaddir_thumb '../community/public/thumb/';
                        
    //Recupero il percorso temporaneo del file
    $userfile_tmp $_FILES['foto']['tmp_name'];
                        
    //recupero il nome originale del file caricato
    $userfile_name $_FILES['foto']['name'];
    if (
    $userfile_name == "") {
    echo 
    "<div class='grassettoarancio' align='center'>
    Nessun file selezionato.
    </div>
    "
    ;
    }else{
    $ext explode('.'$userfile_name);
                        
    $pos sizeof($ext) - 1;
                        
    $userfile_name $id.'.'.$ext[$pos];
                        
    $userfile_type $ext[$pos];
                        
    $img1_size $_FILES['foto']['size'];
                        
    list(
    $w,$h) = dimimage($userfile_tmp);
                
        
    if ((
    $img1_size $size) OR ($w 1024) OR ($h 1024)) {

    echo 
    "<div class='grassettoarancio' align='center'>
    Il file ha una dimensione troppo

     grande.
    </div>
    "
    ;

    }else{

    //Checks if file is an image
                            
    if (($userfile_type != $cert1) AND ($userfile_type != $cert2) AND ($userfile_type != $cert3)){
                            
    echo 
    "<div class='grassettoarancio' align='center'>
    la Foto non ha un'estensione 

    consentita.
    </div>"
    ;

    }else{
                        
    //Cancella foto vecchia

    if(($_POST["foto"]!="")AND(file_exists($uploaddir.$_POST["foto"]))){

    imagedestroy($uploaddir.$_POST["foto"]);

    imagedestroy($uploaddir_thumb.$_POST["foto"]);

    }
    // FINE IF CANCELLAZIONE FILE
                            
    //copio il file dalla locazione temporanea alla mia cartella upload

    if (move_uploaded_file($userfile_tmp$uploaddir $userfile_name))

    {

    //Se l'operazione è andata a buon fine...
                            
                            
                            
    //echo $uploaddir.$userfile_name." ".$uploaddir."thumb/".$userfile_name;

    thumb($uploaddir.$userfile_name,$uploaddir_thumb.$userfile_name,100);
                            
                            
    echo 
    "<div class='grassettoarancio' align='center'>
    Foto caricata!!!
    </div>"
    ;
     
    $sql="update utenti set foto = '$userfile_name' where id = $id";

    $result rs_comm($sql);

    }else{

    //Se l'operazione è fallta...

    echo "<span class='messaggi' align='center'>
    Operazione Fallita!!!
    </span>"
    ;
     
    //print_r($_FILES);
            
    }
            }
            }
            }
            }else{

    $sql"SELECT foto FROM utenti WHERE id = ".$_GET["id"]."";

    $result rs_select($sql);

    $rs mysql_fetch_array($result);?>

    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"

     class="sezcenter"><tr> 

    <td height="30" class="blu">[img]../community/images/modifica foto.jpg[/img]</td></tr>

    <tr> <td><form action="" method="post" enctype="multipart/form-data" name="form1" 

    id="form1"><table width="98%" border="0" align="center" cellpadding="2" cellspacing="2">

    <tr> <td></td><td></td></tr>

    <tr> <td>Foto Attuale:</td><td align="center">

    <?

    if ($r["foto"] != ""){ 

     list(
    $wt,$ht) = dimimage('../public/thumb/'.$rs["foto"]);

     list(
    $w,$h) = dimimage('../public/utenti/'.$rs["foto"]);

     
    $w $w 20;

     
    $h $h 90?>

    <? if (($rs["foto"] != "") AND file_exists("../public/thumb/".$rs["foto"])){ ?>

    [img]../public/thumb/<? echo $rs[[/img]" alt="Nick: <? echo $rs["username"]; ?>

    name="FOTO" width="100" height="100" border="0" align="absmiddle" />


    <? }else{ ?>

    <? if ($rs["sesso"] == "m") { ?>

    [img]../public/utenti/man.jpg[/img]" name="FOTO" 

    width="102" height="110" border="0"></a>


    <? }else{ ?>   

    <? if ($rs["sesso"] == "f") { ?>
                       
    [img]../public/utenti/girl.jpg[/img]" border="0">


    <?
     
    }
     }
     }
     }
    ?>          
    <input name="Foto" type="hidden" value="<? echo $rs["foto"]; ?>" /> 

    </td></tr>

    <tr><td colspan="2" class="trattoGiallo"></td></tr>

    <tr> <td>Foto:</td>

    <td><input name="foto" type="file" id="foto" size="35" /></td></tr>

    <tr> <td colspan="2" class="trattoGiallo"></td></tr>

    <tr> <td></td><td align="right"><input name="id_user" type="hidden" id="id_user"
     value="<? echo $_GET["id"];?>" />

    <input name="act" type="hidden" id="act" value="ok" /> 
                                    
    <input name="imageField2" type="image" src="../img/tasto_modifica.gif" width="64" 

    height="13" border="0" /> </td></tr></table>

    </form></td></tr>

    <tr> <td height="20" class="blu"></td></tr></table>

    <? ?> 
         
    <?
    }
    }else{
    header("Refresh: 3;URL=home.php");
    echo 
    '<div align="center">NON Sei connesso ... ... </div>';
    }
    ?>
    ricordo che la funzione dimimage è la seguente
    Codice PHP:
    function dimimage($src){ 
        
    $fullsize getimagesize($src); 
          if( 
    $fullsize[2] == ){$im = @imagecreatefromjpeg($src);} 
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefromgif($src);} 
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefrompng($src);} 
         
        
    $fullsize_height=$fullsize[1]; 
        
    $fullsize_width=$fullsize[0]; 
        
    imagedestroy($im); 
        return array(
    $fullsize_width,$fullsize_height); 


  7. #7
    VVoVe: Scusa ma non c'ho capito nulla!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    53
    il problema l'ho risolto .
    Allora alcio ti spiego.
    Ho fatto una community in cui gli utenti registrati possono caricare la foto nel proprio profilo.
    In un primo momento le foto caricate non venivano ridimensionate per cui la mia esigenza era quella di poter implementare il resize all'upload delle foto.
    Per fare questo ho usato i seguenti file:
    file gd.php
    Codice PHP:
    <? 
    function GDVersion(){
      if( !
    in_array('gd'get_loaded_extensions()) ) return 0;
      elseif( 
    isGD2supported() ) return 2;
      else return 
    1;
    }
    function 
    isGD2supported(){
      global 
    $GD2;
      if( isset(
    $GD2) AND $GD2 ) return $GD2;
      else{
        
    $php_ver_arr explode('.'phpversion());
        
    $php_ver intval($php_ver_arr[0])*100+intval($php_ver_arr[1]);

        if( 
    $php_ver 402 ){ // PHP <= 4.1.x
          
    $GD2 in_array('imagegd2',get_extension_funcs("gd"));
        }
        elseif( 
    $php_ver 403 ){ // PHP = 4.2.x
          
    $im = @imagecreatetruecolor(1010);
          if( 
    $im ){
            
    $GD2 1;
            @
    imagedestroy($im);
          }
          else 
    $GD2 0;
        }
        else{ 
    // PHP = 4.3.x
          
    $GD2 function_exists('imagecreatetruecolor');
        }
      }

      return 
    $GD2;
    }


    function 
    IsFormatSupported($format){
      if( (
    $format == 'gif') AND (imagetypes() & IMG_GIF) )return true;
      elseif( (
    $format == 'jpeg') AND (imagetypes() & IMG_JPG) )return true;
      elseif( (
    $format == 'png') AND (imagetypes() & IMG_PNG) )return true;
      else return 
    false;
    }



    function 
    ApplicaBordo(&$imres){
      
    $h imagesy($imres)-1;
      
    $w imagesx($imres)-1;

      
    $white imagecolorallocate($imres255255255);
      
    $black imagecolorallocate($imres000);

      
    imagerectangle($imres00$w$h$black);   // Bordo composto da una linea esterna nera
      
    imagerectangle($imres11$w-1$h-1$white); // e da una linea interna bianca
    }



    function 
    imagemyrectangle(&$imgres$x1$y1$x2$y2$col){
      
    imageline($imgres$x1$y1$x2-2$y1$col ); //top
      
    imageline($imgres$x1+1$y2-1$x2$y2-1$col ); //bottom

      
    imageline($imgres$x2-1$y1$x2-1$y2-2$col ); //right
      
    imageline($imgres$x1$y1+1$x1$y2$col ); //left
    }



    //Watermark : Anche l'applicazione di un watermark, cioè di un'immagine salvata sopra all'originale per impedirne un utilizzo al di fuori dei termini di licenza è un'operazione abbastanza semplice con le librerie GD.

    function AddWaterMark(&$imgres, &$imgWM){
      
    imageCopyMerge($imgres$imgWM5500imageSX($imgWM), imageSY($imgWM), 50); }
      
      
      

    function 
    thumb($src,$dest,$thumb_width){

        
    //Inizio il resize 
        
    $fullsize getimagesize($src);
          if( 
    $fullsize[2] == ){$im = @imagecreatefromjpeg($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefromgif($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefrompng($src);}
        
        
        
    $fullsize_height=$fullsize[1];
        
    $fullsize_width=$fullsize[0];
         
        
    $thumb_height=floor($fullsize_height/($fullsize_width/$thumb_width));
         
        
        
        
        if( (
    GDVersion() == 2) AND ($fullsize[2] != 1) ){
            
    $thumb imagecreatetruecolor($thumb_width,$thumb_height);
            
    imagecopyresampled($thumb$im0000$thumb_width$thumb_height$fullsize[0], $fullsize[1]);
          }else{
            
    $thumb imagecreate($thumb_width,$thumb_height);
            
    imagecopyresized($thumb$im0000,$thumb_width$thumb_height$fullsize[0], $fullsize[1]);
          }
        

        
    imagejpeg($thumb$dest80);
          
    imagedestroy($im);
        
    imagedestroy($thumb);
    }  

    // Recupero delle dimensioni dell'immagine

    function dimimage($src){
        
    $fullsize getimagesize($src);
          if( 
    $fullsize[2] == ){$im = @imagecreatefromjpeg($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefromgif($src);}
          elseif( 
    $fullsize[2] == ){$im = @imagecreatefrompng($src);}
        
        
    $fullsize_height=$fullsize[1];
        
    $fullsize_width=$fullsize[0];
        
    imagedestroy($im);
        return array(
    $fullsize_width,$fullsize_height);
    }

    ?>
    poi ho creato un file per la modifica della foto che mi permettesse di visualizzare la foto vecchia, se eventualmente presente, oppure di visualizzare una immagine di default a seconda del sesso dell'utente.
    file modifica_foto.php
    Codice PHP:
    <?
    include_once("include/config.php");
    include_once(
    "include/auth.lib.php");
    include_once(
    "include/reg.lib.php");
    include_once(
    "include/gd.php");
    include_once(
    "include/function.php");

    list(
    $status$user) = auth_get_status();

    if (
    $status == AUTH_LOGGED){

    if ((isset(
    $_GET["id"])) AND ($prof get_profilo($user["id_user"]))){
    ?>

                      <?
                        
                        
    if ((isset($_POST["act"])) AND ($_POST["act"] == "ok")){
                            
                        
    $size "800000"//What do you want size limited to be if there is one
                        
    $id $_POST["id_user"];
                        
                        
    //all image types to upload
                        
    $cert1 "jpg"//Jpeg type 1
                        
    $cert2 "jpeg"//Jpeg type 2
                        
    $cert3 "gif"//Gif type
                        
    $cert4 "png"//PNG type
                        
                        //percorso della cartella dove mettere i file caricati
                        
    $uploaddir '../community/public/utenti/';
                        
    $uploaddir_thumb '../community/public/thumb/';
                        
                        
    //Recupero il percorso temporaneo del file
                        
    $userfile_tmp $_FILES['foto']['tmp_name'];
                        
                        
    //recupero il nome originale del file caricato
                        
                        
                        
    $userfile_name $_FILES['foto']['name'];
                        
                        if (
    $userfile_name == "") {
                            echo 
    "<div class='grassettoarancio' align='center'>
    Nessun file selezionato.
    </div>
    "
    ;
                        }else{
                        
    $ext explode('.'$userfile_name);
                        
                        
    $pos sizeof($ext) - 1;
                        
                        
    $userfile_name $id.'.'.$ext[$pos];
                        
                        
    $userfile_type $ext[$pos];
                        
                        
    $img1_size $_FILES['foto']['size'];
                        
                        list(
    $w,$h) = dimimage($userfile_tmp);
                
        
                        if ((
    $img1_size $size) OR ($w 1024) OR ($h 1024)) {
                            echo 
    "<div class='grassettoarancio' align='center'>
    Il file ha una dimensione troppo grande.
    </div>
    "
    ;
                        }else{
                            
    //Checks if file is an image
                            
                        
    if (($userfile_type != $cert1) AND ($userfile_type != $cert2) AND ($userfile_type != $cert3) AND ($userfile_type != $cert4)){
                            
                            echo 
    "<div class='grassettoarancio' align='center'>
    la Foto non ha un'estensione consentita.
    </div>"
    ;
                        }else{
                        
                        
    //Cancella foto vecchia
                            
    if(($_POST["foto"]!="")AND(file_exists($uploaddir.$_POST["foto"]))){
                                
    unlink($uploaddir.$_POST["foto"]);
                                
    unlink($uploaddir_thumb.$_POST["foto"]);
                            }
    // FINE IF CANCELLAZIONE FILE
                            
                        //copio il file dalla locazione temporanea alla mia cartella upload
                        
    if (move_uploaded_file($userfile_tmp$uploaddir $userfile_name))
                        {
                        
    //Se l'operazione è andata a buon fine...
                            
                            
                            
                            //echo $uploaddir.$userfile_name." ".$uploaddir."thumb/".$userfile_name;
                            
    thumb($uploaddir.$userfile_name,$uploaddir_thumb.$userfile_name,100);
                            
                            
                            echo 
    "<div class='grassettoarancio' align='center'>
    Foto caricata!!!
    </div>"

                            
    $sql="update utenti set foto = '$userfile_name' where id = $id";
                            
    $result rs_comm($sql);
                        }
                        else
                        {
                        
    //Se l'operazione è fallta...
                        
    echo "<span class='messaggi' align='center'>
    Operazione Fallita!!!
    </span>"

                        
    //print_r($_FILES);
                        
    }
                        
                        }
                        }
                        }
                    }else{
                        
    $sql"SELECT foto FROM utenti WHERE id = ".$_GET["id"]."";
                        
    $result rs_select($sql);
                        
    $rs mysql_fetch_array($result);
                    
    ?>
                      <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="sezcenter">
                        <tr> 
                          <td height="30" class="blu">[img]../community/images/modifica foto.jpg[/img]</td>
                        </tr>
                        <tr> 
                          <td><form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
                              <table width="98%" border="0" align="center" cellpadding="2" cellspacing="2">
                                <tr> 
                                  <td></td>
                                  <td></td>
                                </tr>
                                <tr> 
                                  <td>Foto Attuale:</td>
                                  <td align="center">
                                    <?
                                
                                
    if ($rs["logo"] != ""){ 
                                  list(
    $wt,$ht) = dimimage('../public/thumb/'.$rs["logo"]);
                                  list(
    $w,$h) = dimimage('../public/loghi/'.$rs["logo"]);
                                  
    $w $w 20;
                                  
    $h $h 90
                                    echo 
    "<a href=\"javascript:popUpWindow('../view_logo.php?file=".$rs["logo"]."', '50', '50', '$w', '$h')\" >[img]../public/thumb/".$rs["logo"]."[/img]</a>";
                                }
                                  
    ?>
                                  <? if (($rs["foto"] != "") AND file_exists("../community/public/thumb/".$rs["foto"])){ ?>
                                [img]../community/public/thumb/<? echo $rs[[/img]" alt="Nick: <? echo $prof["username"]; ?>" name="FOTO"  border="1" align="absmiddle" />

                                <? }else{ ?>
                                <? if ($rs["sesso"] == "m") { ?>
                                    [img]../community/public/utenti/man.jpg[/img]" name="FOTO" width="90" height="95" border="0"></a>

                          <? }else{ ?>   
                          <? if ($rs["sesso"] == "f") { ?>                   
                                      [img]../community/public/utenti/girl.jpg[/img]" border="0">

                            <?
              
              
    }
              }
              }
              
    ?>          
                                    <input name="Foto" type="hidden" value="<? echo $rs["foto"]; ?>" /> 
                                  </td>
                                </tr>
                                <tr> 
                                  <td colspan="2" class="trattoGiallo"></td>
                                </tr>
                                <tr> 
                                  <td>Foto:</td>
                                  <td><input name="foto" type="file" id="foto" size="35" /></td>
                                </tr>
                                <tr> 
                                  <td colspan="2" class="trattoGiallo"></td>
                                </tr>
                                <tr> 
                                  <td></td>
                                  <td align="right"><input name="id_user" type="hidden" id="id_user" value="<? echo $_GET["id"];?>" />
                                    <input name="act" type="hidden" id="act" value="ok" /> 
                                    <input name="imageField2" type="image" src="../img/tasto_modifica.gif" width="64" height="13" border="0" /> 
                                  </td>
                                </tr>
                              </table>
                            </form></td>
                        </tr>
                        <tr> 
                          <td height="20" class="blu"></td>
                        </tr>
                      </table>
                      <? ?>
                      

    <?
    }
    }else{
    header("Refresh: 3;URL=profilo.php");
    echo 
    '<div align="center">NON Sei connesso ... ... </div>';
    }
    ?>
    in questo modo la foto caricata dall'utente viene rinominata con il numero id dell'utente con estensione jpg.
    da precisare che la foto originale vine salvata su una sottocartella, presente nella cartella public, chiamata utenti con i permessi 777 mentre la thumb viena salvata nella sottocartella thumb con permessi 777.
    le foto vengono ridimensionate in modo che la larghezza debba essere fissa a 100 px mentre la lunghezza è variabile questolo possiamo desumere dalla funzione function dimimage presente nel file gd.php.
    spero che ora ti sia più chiaro.
    cmq a prescindere da tutto il problema l'ho risolto e grazie della tua disponibilità.

  9. #9
    Beh.... ora che mi era tutto chiaro, hai risolto!
    Meglio così, comunque... a parte gli scherzi!


    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    119
    Se non ho capito male il tuo script inserisce il nome dell'utente nel file caricato... Giusto ?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.