Visualizzazione risultati 1 fino 2 di 2

Discussione: Problema con script per il ridimensionamento immagini [era: Mi concedete...]

  1. #1
    Guest

    Predefinito Problema con script per il ridimensionamento immagini [era: Mi concedete...]

    Allora ho creato uno script prendendo alcune funzioni da internet per ridiemnsionare l'immagine potete dare un occhiata e controllare se ho fatto tutto bene vi pregho sono 2 paginette!

    index.php (che è quella che mi preoccupa di più)

    Codice PHP:
    <?php
    $max_file_size
    = 102400;//Dimensione massima di un file.102400 Bytes = 100 KiloByte;1024 Bytes = 1 KiloByte
    $image_type = array('jpeg', 'jpg', 'png', 'gif', 'bmp'); //Estensioni accettate.Badate bene di scriverle in minuscolo!
    if(isset($_FILES['file'])){//Se esiste $_FILES
    // se l'immagine è orizzontale questo numero rappresenta la larghezza in pixel della miniatura
    // altrimenti, se l'immagine è verticale, rappresenta l'altezza della miniatura.
    $thumb_width = 165;
    // se l'immagine è orizzontale questo numero rappresenta la larghezza in pixel della foto dopo essere stata ridimensionata
    // altrimenti, se l'immagine è verticale, ne rappresenta l'altezza.
    $photo_width = 165;
    require
    "class.upload.php";//includiamo la classe
    $obj = new upload($_FILES['file'],$destination_path = "",$max_file_size,$image_type); //Inizializziamo la classe!
    // Se non esiste la cartella di destinazione delle miniature ne si forza la creazione
    if (!file_exists($destination_path))
    {
    mkdir($VariabileConID , 0777);
    }
    /*Il primo parametro è il file
    il secondo la cartella con le immagini(E ricordate di inserire / dopo il nome);
    Il terzo parametro è il limite massimo di grandezza dei files
    il quarto parametro è l'array contenente le estensioni accettate
    */
    }

    ?>

    <?php
    echo "Estensioni accettate : ";//Scrive, tramite foreach, tutte le estensioni accettate
    foreach($image_type as $type){
    echo
    $type." ";
    }
    // Apertura della directory in cui sono contenute le foto a dimensione originale
    if ($handle = opendir($VariabileConID))
    // Lettura delle immagini conenute nella cartella $VariabileConID
    while (false !== ($file = readdir($handle)))
    {
    list(
    $width, $height, $type, $attr) = @getimagesize($VariabileConID.$file);

    // Elaborazione delle nuove dimensioni (altezza e larghezza) in proporzione.
    // Ciò consente di non alterare la qualità della immagine.
    if($width > $height)
    {
    $new_width = $quanto;
    $new_height = ($quanto * $height) / $width;
    $new_height = number_format($new_height, 0);
    }
    elseif(
    $height > $width)
    {
    $new_height = $quanto;
    $new_width = ($quanto * $width) / $height;
    $new_width = number_format($new_width, 0);
    }
    elseif(
    $height == $width)
    {
    $new_width = $quanto;
    $new_height = $quanto;
    }
    //Se si sta visualizzando una singola foto e questa è già stata ridimensionata si ignora questo passaggio, altrimenti la foto viene ridimensionata.
    // L'"if" controlla se la foto in questione ha già le dimensioni desiderate. Se le dimensioni non sono uguali a quelle volute, verrà ridimensionata.
    if ($mode == "view")
    {
    if (
    $new_height != $height && $new_width != $width)
    {
    isset(
    $compression) ? $compression = $compression : $compression = 100; // In caso non sia settata la compressione gli si assegna il valore di default
    $destimg=imagecreatetruecolor($new_width,$new_height) or die("Problemi nelle creazioni dell'immagine");// Creazione Immagine
    ImageCopyResampled($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento"); //Ridimensionamento Nuova Immagine
    ImageJPEG($destimg, $destination_path.$file, $compression) or die("Problemi nel salvataggio"); //Salvataggio Nuova Immagine
    }
    }
    ?>
    <form enctype="multipart/form-data" action="index.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size; ?>" />
    <input type="file" name="file" />
    <input type="submit" name="upload" value="Upload">

    </form>

  2. #2
    Guest

    Predefinito

    Ho fatto un altro post perche altervista non mi faceva inaviare il messaggio

    class.upload.php
    Codice PHP:
    <?php

    class upload{//Il nome della classe
    public $files;//Variabile pubblica di classe contenente il file
    public $dir;//Variabile pubblica di classe contenente la cartella
    public $max_size;//Variabile pubblica di classe contenente la dimensione massima dei files
    public $ext;//Variabile pubblica di classe contenente l'estensione del file
    public $ammissed_ext;//Variabile pubblica di classe contenente l'array con le estensioni accettate
    public $error;//Variabile pubblica di classe contenente gli errori
    public $complete;//Variabile pubblica di classe contenente il path sul disco dell'immagine
    public $link;//Variabile pubblica di classe contenente l'URL dell'immagine
    public $my_err;//Variabile pubblica di classe contenente l'errore finale
    function load($esito,$err = ""){//Funzione load .Prevede due variabili :
    //esito(true o false, true se non c'è errore, false se c'è);
    //Err : se esito è false allora dentro contiene l'errore.Altrimenti sarà vuoto



    if(empty($err) && $esito = true){//Se non ci sono errori e l'esito è ok

    $this->error = "";
    if(!
    $this->is_ammissed_file()){ //Qui si fa uso di una funzione interna alla classe
    //Con $this->miafunc(); apriamo la funzione.Se la classe è statica utilizzeremo self::miafunc();
    $this->error[] = "Estensione non accetta!";//Aggiungiamo un errore nell'array
    }



    if(empty(
    $this->error)){
    {
    $this->files['name'] = str_ireplace(" ","_",$this->files['name']);//Eliminiamo gli spazi e sostituiamoli con -

    $id = 0;

    if(!@
    move_uploaded_file($this->files['tmp_name'],$this->complete)){ //Se l'upload è andato a buon fine...

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    }else{
    //Se non esiste un file con quel nome...
    if(!@move_uploaded_file($this->files['tmp_name'],$this->dir.$id."_".$VariabileConID))//Upload!
    {

    $this->error[] = "Impossibile copiare il file nella directory";


    }
    $this->link = "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-9).$this->dir.$id."_".$this->files['name'];
    }

    }


    }
    else{
    $this->error[] = $err;//Altrimenti aggiunge l'errore
    }


    }
    $this->no_error() ? print($this->link):print("Sono stati riscontrati i seguenti errori :
    "
    .$this->my_err);
    }


    function
    set_file_ext($_resource_file_name){//Funzione che restituisce l'estensione del file

    $ext_file = explode("." , $_resource_file_name);//Dividiamo la stringa in tante parti quante sono i punti + 1
    //ES: $stringa = "ciao.mi.chiamo.valerio";
    //$stringa_array = explode(".",$stringa);
    //$stringa contiene:
    //$stringa[0] = "ciao"
    //$stringa[1] = "mi"
    //$stringa[2] = "chiamo"
    //$stringa[3] = "valerio"
    $count_ext_files = count($ext_file)-1;//Contiamo il numero di elementi nell'array
    //ES: $array = Array("Ciao","xx","xxxx","jjb");
    //$count = count($array);
    //Restituisce 4
    $myext = $ext_file[$count_ext_files];
    return
    $myext;//La funzione darà come risultato l'estensione

    }


    function
    is_ammissed_file(){//Funzione che restituisce true o false se l'estensione dei file è accettata
    $this->ext = $this->set_file_ext($this->files['name']); //Tramite la nostra funzione creata prima settiamo l'estensione
    if(in_array(strtolower($this->ext),$this->ammissed_ext))//Se l'estensione è contenuta nell'array della estensioni(con la funzione strtolower tutti i caratteri diventano in minuscolo(es .PHP diventa .php)
    {
    return
    true;//Restituisce true
    }else{
    return
    false;//Restituisce false
    }

    }

    function
    __construct($files,$dir,$max_size,$ammissed_ext){// __construct, funzione che parte alla dichiarazione della classe
    //Da notare l'uso di $this->files invece di $files
    // la variabile globale di classe $this-> si usa nelle funzioni della classe
    //nelle classi di tipo statico non si utilizza $this-> ma self::
    //Assegnamo ad ogni variabile di classe il rispettivo contenuto
    $this->files = $files;
    $this->dir = $dir;
    $this->max_size = $max_size;
    $this->ammissed_ext = $ammissed_ext;
    switch(
    $this->files['error'])


    {
    //Fa uno switch degli errori presenti all'interno della variabile error di $this->files

    case UPLOAD_ERR_NO_FILE://Se non è stato selezionato alcun file...
    $this->error[] = "Non &egrave; stato selezionato alcun file!";
    $this->load(false,$this->error);
    break;

    case
    UPLOAD_ERR_INI_SIZE://Se si superano le dimensioni massime secondo php.ini...
    $this->error[] = "&egrave; stato riscontrato un errore!Il file &egrave; troppo grande secondo le impostazioni del file php.ini!";
    $this->load(false,$this->error);
    break;

    case
    UPLOAD_ERR_FORM_SIZE://Se si superano le dimensioni massime di max_file_size...
    $this->error[] = "Le dimensioni superano il valore massimo consentito!";
    $this->load(false,$this->error);
    break;

    case
    UPLOAD_ERR_PARTIAL://Se si riscontra un errore nell'upload...
    $this->error[] = "&egrave; stato riscontrato un errore nell'upload!";
    $this->load(false,$this->error);
    break;

    case
    UPLOAD_ERR_OK://Nessun errore
    $this->load(true);
    break;

    default:
    //S c'è un errore sconosciuto...
    $this->error[] = "&egrave; stato riscontrato un errore sconosciuto!";
    $this->load(false,$this->error);
    break;
    }

    }

    function
    no_error(){ //Funzione che controlla se ci sono errori
    if(!empty($this->error)){//Se $this->error (variabile di classe) non è vuoto, vuol dire che ci sono errori

    foreach($this->error as $err){//Scorre l'array ...
    $this->my_err .= $err."<br />"; //E lo riempe!
    }
    return
    false;
    }else
    //Altrimenti...



    }
    }

    ?>

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •