Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    Upload e resize immagine

    Sto realizzando un sito dove vari utenti che lo gestiranno, Amministratore e redattori, potranno inseire degli articoli e anche delle immagini.

    Volevo sapere se è possibile permettere agli utenti di caricare foto di qualsiasi dimensione, e che questa venga automaticamente ridimensionata e quindi uplodata con una dimensione massima a mia scelta width 300 px.

    Esempio: redattore franco ha una foto width 1600 e height 1200 pixel.
    Io vorrei che la foto uplodata abbia la dimensione di width 300 e che height 225, in questo caso.

    spero di essere stato chiaro.

  2. #2
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    certo che è possibile, esegui l'upload normalmente e poi effettua sul file un ridimensionamento usando per esempio la libreria GD vedi esempio

  3. #3
    li ho visti ma ci ho capito poco.
    Se puoi aiutarmi te ne sarei grato.
    ciao

  4. #4
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    intanto posta lo script di upload...
    poi vedremo insieme dove intervenire per ridimensionare l'immagine

  5. #5
    Eccolo!

    Codice PHP:

    //Funzione Replace " " in "_" 
    function fSpace($string)
    {
        return 
    str_replace(" ""_"$string);
    }

    //Funzione per ricavare l' estensione di un File
    function fExt($string)

        
    //Controllo il file
        
    $trova_punto explode("."$string);
        
    $estensione $trova_punto[count($trova_punto) - 1];
        
    $estensione strtolower($estensione);
        
        
    // Se non ci sono estensioni
        
    if (isset($trova_punto[1]) == FALSE)
        {
            return 
    '';
        }
        
    //Ritorno il valore dell' estensione
        
    return $estensione;
    }
    //Fine funzioni


    //Effettuo l' upload dell' immagine...
    $uploaddir 'upload_img/';
    $uploadfile fspace($_FILES['txt_file']['name']);
    $upload $uploaddir $uploadfile;

    //Controllo che sia stato specificato un file
    if(!strlen($uploadfile) == 0)
    {
        
    //Controllo l' estensione del file
        
    if((fExt($uploadfile) == 'gif') or (fExt($uploadfile) == 'jpg') or (fExt($uploadfile) == 'jpeg') or (fExt($uploadfile) == 'png'))
        {
            
    //Eseguo l' upload
            
    if(move_uploaded_file($_FILES['txt_file']['tmp_name'], $upload))
            {
                
    //Upload eseguito con successo
                
    echo "Upload eseguito correttamente";
            
    //    echo "

    [img]". $upload ."[/img]";
                echo "

    [url='form.php']Carica una nuova immagine[/url]";
            }else{
                //Upload fallito
                echo "
    Upload fallito !";
                echo "
    [url='form.php']Torna dietro[/url]";
            }
        }else{
            //Messaggio di errore
            echo "
    File non valido";
            echo "
    [url='form.php']Torna dietro[/url]";
        }
    }else{
        //Messaggio di errore
        echo "
    Specificare un file !";
        echo "
    [url='form.php']Torna dietro[/url]";

    Grazie

  6. #6
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    prendo per buono senza gurdare il codice prima di
    Codice PHP:
    if((fExt($uploadfile) == 'gif') or (fExt($uploadfile) == 'jpg') or (fExt($uploadfile) == 'jpeg') or (fExt($uploadfile) == 'png'))     { 
    modificherei il file così:

    Codice PHP:
    //Funzione Replace " " in "_" 
    function fSpace($string)
    {
        return 
    str_replace(" ""_"$string);
    }

    //Funzione per ricavare l' estensione di un File
    function fExt($string)

        
    //Controllo il file
        
    $trova_punto explode("."$string);
        
    $estensione $trova_punto[count($trova_punto) - 1];
        
    $estensione strtolower($estensione);
        
        
    // Se non ci sono estensioni
        
    if (isset($trova_punto[1]) == FALSE)
        {
            return 
    '';
        }
        
    //Ritorno il valore dell' estensione
        
    return $estensione;
    }
    //Fine funzioni


    //Effettuo l' upload dell' immagine...
    $uploaddir 'upload_img/';
    $uploadfile fspace($_FILES['txt_file']['name']);
    $upload $uploaddir $uploadfile;

    //Controllo che sia stato specificato un file
    if(!strlen($uploadfile) == 0)
    {
        
    //Controllo l' estensione del file
        
    if((fExt($uploadfile) == 'gif') or (fExt($uploadfile) == 'jpg') or (fExt($uploadfile) == 'jpeg') or (fExt($uploadfile) == 'png'))
        { 
        
    $max_width=300;

        if (!
    extension_loaded('gd') && !extension_loaded('gd2')){
            
    trigger_error("GD is not loaded"E_USER_WARNING);
            return 
    false;
        }

        list(
    $width_orig$height_orig$image_type) = getimagesize($uploadfile);
       
        switch (
    $image_type){
            case 
    1:
                
    $im imagecreatefromgif($uploadfile);
            break;
            case 
    2:
                
    $im imagecreatefromjpeg($uploadfile);
            break;
            case 
    3:
                
    $im imagecreatefrompng($uploadfile);
            break;
            default:
                
    trigger_error('Immagine non valida!'E_USER_WARNING);
            break;
        }

        
    $aspect_ratio = (float) $height_orig $width_orig;
        
    $thumb_height round($thumb_width $aspect_ratio);
       
        while(
    $thumb_height>$max_width){
            
    $thumb_width -= 10;
            
    $thumb_height round($thumb_width $aspect_ratio);
        }

        
    $newImg imagecreatetruecolor($thumb_width$thumb_height);

        
    /* Check if this image is PNG or GIF, then set if Transparent*/ 
        
    if(($image_type == 1) OR ($image_type==3)){
            
    imagealphablending($newImgfalse);
            
    imagesavealpha($newImg,true);
            
    $transparent imagecolorallocatealpha($newImg255255255127);
            
    imagefilledrectangle($newImg00$thumb_width$thumb_height$transparent);
        }

        
    imagecopyresampled($newImg$im0000$thumb_width$thumb_height$width_orig$height_orig);
       
        switch (
    $image_type)
        {
            case 
    1:
                    
    imagegif($newImg$upload);
            break;
            case 
    2:
                    
    imagejpeg($newImg$upload);
            break;
            case 
    3:
                    
    imagepng($newImg$upload);
            break;
            default:
                    
    trigger_error('Ridimensionamento fallito!'E_USER_WARNING);
            break;
        }
     
    }

    }else{
        
    //Messaggio di errore
        
    echo "Specificare un file !";
        echo 
    "
    [url='form.php']Torna dietro[/url]"
    ;


  7. #7
    Ti ringrazio per l'aiuto ma purtroppo mi da questi notice e warning

    Warning: getimagesize(franco.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\siti\prova\invio_img\upload.php on line 53
    Codice PHP:
    list($width_orig$height_orig$image_type) = getimagesize($uploadfile); 
    Warning: Immagine non valida! in C:\siti\prova\invio_img\upload.php on line 66
    Codice PHP:
    trigger_error('Immagine non valida!'E_USER_WARNING); 
    Warning: Division by zero in C:\siti\prova\invio_img\upload.php on line 70
    Codice PHP:
    $aspect_ratio = (float) $height_orig $width_orig
    Notice: Undefined variable: thumb_width in C:\siti\prova\invio_img\upload.php on line 71
    Codice PHP:
    $thumb_height round($thumb_width $aspect_ratio); 
    Notice: Undefined variable: thumb_width in C:\siti\prova\invio_img\upload.php on line 78
    Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\siti\prova\invio_img\upload.php on line 78
    Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\siti\prova\invio_img\upload.php on line 78
    Codice PHP:
    $newImg imagecreatetruecolor($thumb_width$thumb_height); 
    Notice: Undefined variable: im in C:\siti\prova\invio_img\upload.php on line 88
    Notice: Undefined variable: thumb_width in C:\siti\prova\invio_img\upload.php on line 88
    Warning: imagecopyresampled(): supplied argument is not a valid Image resource in C:\siti\prova\invio_img\upload.php on line 88
    Codice PHP:
    imagecopyresampled($newImg$im0000$thumb_width$thumb_height$width_orig$height_orig); 
    Warning: Ridimensionamento fallito! in C:\siti\prova\invio_img\upload.php on line 102
    Codice PHP:
    trigger_error('Ridimensionamento fallito!'E_USER_WARNING); 
    L'immagine originale che sto cercando di inviare e 2048 px X 1536 px

  8. #8
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    prova con

    Codice PHP:
    list($width_orig$height_orig$image_type) = getimagesize($_FILES['txt_file']['name']); 
    oppure se ancora non dovesse funzionare togli

    Codice PHP:
        list($width_orig$height_orig$image_type) = getimagesize($uploadfile);
       
        switch (
    $image_type){
            case 
    1:
                
    $im imagecreatefromgif($uploadfile);
            break;
            case 
    2:
                
    $im imagecreatefromjpeg($uploadfile);
            break;
            case 
    3:
                
    $im imagecreatefrompng($uploadfile);
            break;
            default:
                
    trigger_error('Immagine non valida!'E_USER_WARNING);
            break;
        } 
    e cambialo con
    Codice PHP:
                switch(fExt($uploadfile)){
                    case 
    'jpeg':
                    case 
    'jpg':
                        
    $im imagecreatefromjpeg($uploadfile);
                       break;
                    case 
    'png':
                         
    $im imagecreatefrompng($uploadfile);
                       break;
                    case 
    'gif':
                        
    $im imagecreatefromgif($uploadfile);
                       break;
                       default:
    trigger_error('Immagine non valida!'E_USER_WARNING);
                       break;
                   }

                
    $width_orig imagesx($im);
                
    $height_orig imagesy($im); 
    ovviamente nel resto dello script dove viene richiamato $image_type sostituiscilo come mostrato sopra..

  9. #9
    mi sono incartato e non ci sto capendo un diavolo di niente.

  10. #10
    Cercando su HTML.it ho trovato questo che funziona tranne che con i file con estensioni png.
    eccolo:
    Codice PHP:
    [
    <?php ini_set("memory_limit""200000000"); // for large images so that we do not get "Allowed memory exhausted"?>
    <?php
    // upload the file
    if ((isset($_POST["submitted_form"])) && ($_POST["submitted_form"] == "image_upload_form")) {
        
        
    // file needs to be jpg,gif,bmp,x-png and 4 MB max
        
    if (($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg" || $_FILES["image_upload_box"]["type"] == "image/gif" || $_FILES["image_upload_box"]["type"] == "image/x-png") && ($_FILES["image_upload_box"]["size"] < 4000000))
        {
            
      
            
    // some settings
            
    $max_upload_width 2592;
            
    $max_upload_height 1944;
              
            
    // if user chosed properly then scale down the image according to user preferances
            
    if(isset($_REQUEST['max_width_box']) and $_REQUEST['max_width_box']!='' and $_REQUEST['max_width_box']<=$max_upload_width){
                
    $max_upload_width $_REQUEST['max_width_box'];
            }    
            if(isset(
    $_REQUEST['max_height_box']) and $_REQUEST['max_height_box']!='' and $_REQUEST['max_height_box']<=$max_upload_height){
                
    $max_upload_height $_REQUEST['max_height_box'];
            }    

            
            
    // if uploaded image was JPG/JPEG
            
    if($_FILES["image_upload_box"]["type"] == "image/jpeg" || $_FILES["image_upload_box"]["type"] == "image/pjpeg"){    
                
    $image_source imagecreatefromjpeg($_FILES["image_upload_box"]["tmp_name"]);
            }        
            
    // if uploaded image was GIF
            
    if($_FILES["image_upload_box"]["type"] == "image/gif"){    
                
    $image_source imagecreatefromgif($_FILES["image_upload_box"]["tmp_name"]);
            }    
            
    // BMP doesn't seem to be supported so remove it form above image type test (reject bmps)    
            // if uploaded image was BMP
            
    if($_FILES["image_upload_box"]["type"] == "image/bmp"){    
                
    $image_source imagecreatefromwbmp($_FILES["image_upload_box"]["tmp_name"]);
            }            
            
    // if uploaded image was PNG
            
    if($_FILES["image_upload_box"]["type"] == "image/x-png"){
                
    $image_source imagecreatefrompng($_FILES["image_upload_box"]["tmp_name"]);
            }
            

            
    $remote_file "image_files/".$_FILES["image_upload_box"]["name"];
            
    imagejpeg($image_source,$remote_file,100);
            
    chmod($remote_file,0644);
        
        

            
    // get width and height of original image
            
    list($image_width$image_height) = getimagesize($remote_file);
        
            if(
    $image_width>$max_upload_width || $image_height >$max_upload_height){
                
    $proportions $image_width/$image_height;
                
                if(
    $image_width>$image_height){
                    
    $new_width $max_upload_width;
                    
    $new_height round($max_upload_width/$proportions);
                }        
                else{
                    
    $new_height $max_upload_height;
                    
    $new_width round($max_upload_height*$proportions);
                }        
                
                
                
    $new_image imagecreatetruecolor($new_width $new_height);
                
    $image_source imagecreatefromjpeg($remote_file);
                
                
    imagecopyresampled($new_image$image_source0000$new_width$new_height$image_width$image_height);
                
    imagejpeg($new_image,$remote_file,100);
                
                
    imagedestroy($new_image);
            }
            
            
    imagedestroy($image_source);
            
            
            
    header("Location: submit.php?upload_message=image uploaded&upload_message_type=success&show_image=".$_FILES["image_upload_box"]["name"]);
            exit;
        }
        else{
            
    header("Location: submit.php?upload_message=make sure the file is jpg, gif or png and that is smaller than 4MB&upload_message_type=error");
            exit;
        }
    }
    ?>

            <?php if(isset($_REQUEST['upload_message'])){?>
                <div class="upload_message_<?php echo $_REQUEST['upload_message_type'];?>">
                <?php echo htmlentities($_REQUEST['upload_message']);?>
                </div>
            <?php }?>
    <form action="submit.php" method="post" enctype="multipart/form-data" name="image_upload_form" id="image_upload_form" style="margin-bottom:0px;">
    <label>Image file, maximum 4MB. it can be jpg, gif, png:</label>

    <input name="image_upload_box" type="file" id="image_upload_box" size="40" />
    <input type="submit" name="submit" value="Upload image" />






    <input name="max_width_box" type="hidden" id="max_width_box" value="300" size="4">
    <input name="max_height_box" type="hidden" id="max_height_box" value="" size="4">




    <p style="padding:5px; border:1px solid #EBEBEB; background-color:#FAFAFA;">
    <input name="submitted_form" type="hidden" id="submitted_form" value="image_upload_form" />
    </form>
    [php]
    <?php if(isset($_REQUEST['show_image']) and $_REQUEST['show_image']!=''){?>



    [img]image_files/<?php echo $_REQUEST['show_image'];?>[/img]
    </p>
    <?php }?>
    [php]

    Quello che vorrei fare, al fine di eviare la sostituzione di un file se ne viene caricato uno con lo stesso nome, è salvare il file con l'aggiunta dopo il nome della data ora minuti e secondi del tipo se il file si chiama franco.jpg salvarlo con il nome franco14082010184025.jpg

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.