Visualizzazione risultati 1 fino 3 di 3

Discussione: ridimensionamento png non va. Perchè?

  1. #1
    fotovetrina non è connesso Neofita
    Data registrazione
    23-10-2010
    Messaggi
    13

    Predefinito ridimensionamento png non va. Perchè?

    Ciao

    Ho questa funzione che viene richiamata per ridimensionare le immagini:

    Codice PHP:

    <?php
    function makeresize($dir,$pic,$n,$t){
    @list(
    $width, $height, $type, $attr) = @getimagesize($pic);
    $max_w = 500;
    $max_h = 300;
    $ratio = @min($max_w/$width,$max_h/$height);

    // Verifico che l'immagine originale sia più grande delle dimensioni massime 100*100pxl
    if ($ratio < 1){
    // Individuo le nuove dimensioni da assegnare all'immagine
    $w = @floor($ratio*$width);
    $h = @floor($ratio*$height);

    // creo una nuova immagine con le dimensioni appena calcolate
    $thumb = @imagecreatetruecolor($w,$h);
    if (
    $t == 'image/jpeg'){$temp = @imagecreatefromjpeg($pic);}
    elseif (
    $t == 'image/gif'){$temp = @imagecreatefromgif($pic);}
    elseif (
    $t == 'image/png'){$temp = @imagecreatefrompng($pic);}


    // ridimensiono l'originale e salvo nella cartella di destinazione
    @imagecopyresampled($thumb,$temp,0,0,0,0,$w,$h,$width,$height);
    if (
    $t == 'image/jpeg'){@imagejpeg($thumb,"$dir/".$n, 100);}
    elseif (
    $t == 'image/gif'){@imagegif($thumb,"$dir/".$n, 100);}
    elseif (
    $t == 'image/png'){@imagepng($thumb,"$dir/".$n, 100);}
    }
    }
    ?>
    il codice della pagina che la richiama è questo:

    Codice PHP:

    .....

    // Creo una array con i formati accettati
    $tipi_consentiti = array("image/gif","image/jpeg","image/png","image/pjpeg");

    // recupero i dati dal form
    $titolo = @addslashes($_POST['titolo']);
    $descrizione = @addslashes($_POST['descrizione']);
    $nome = @addslashes($_FILES['imagefile']['name']);
    $path = $carfoto_user . stripslashes($nome);
    $tipo = @addslashes($_FILES['imagefile']['type']);

    ............

    // verifico che il formato del file sia tra quelli accettati
    if ((@in_array($_FILES['imagefile']['type'], $tipi_consentiti))&& ($_FILES["imagefile"]["size"] < 2200000)){
    // copio il file nella cartella delle immagini
    @copy ($_FILES['imagefile']['tmp_name'], $carfoto_user . $nome);

    $nomenew = $t."_".$nome;

    // creo ridimensionamento
    @makeresize($carfoto_user,$path,$nomenew,$tipo);
    // creo la miniatura
    @makeThumb($carthumb_user,$path,$nomenew,$tipo);

    unlink($carfoto_user.$nome);
    makeresize e makeThumb sono in pratica la stessa funzione; sono solo modificate le impostazioni di
    ridimensionamento.

    le funzioni e il codice di cui sopra fanno il loro lavoro senza problemi con le immagini gif e jpg ma
    c'è un problema che non capisco con le immagini png.
    L'immagine originale viene caricata sul server ma poi non viene ridimensionata,
    nella cartella di destinazione trovo quindi l'immagine originale png (che avrebbe dovuto essere in un secondo momento eliminata con unlink()) e il nome dell'immagini ridimensionata che invece non c'è.
    Ripeto. Il problema esiste solo con le png.
    Ho provato sia in locale che sui server altervista...niente lo stesso

    Perchè? Il codice di ridimensionamento non va bene per questo tipo di immagini?
    Potete aiutarmi?

    Grazie

  2. #2
    Guest

    Predefinito

    non so se sia questo il problema ma,se non ricordo male, l'istruzione imagepng() vuole solo i primi 2 parametri ma non il terzo(cioè quello della qualità)...

  3. #3
    fotovetrina non è connesso Neofita
    Data registrazione
    23-10-2010
    Messaggi
    13

    Predefinito

    Citazione Originalmente inviato da ALFRAN Visualizza messaggio
    non so se sia questo il problema ma,se non ricordo male, l'istruzione imagepng() vuole solo i primi 2 parametri ma non il terzo(cioè quello della qualità)...

    Ho trovato!
    In effetti come dicevi c'era un problema con il terzo parametro.
    Non vuole solo i primi 2 la funzione, ma il terzo parametro della stessa deve essere espresso per le immagini png da 0 a 9 e non da 0 a 100.

    Grazie e ciao

Regole di scrittura

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