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

    [PHP] Redimensionare immagini

    Raga ho un problema con un mio script per redimensionere le immagini: gif, jpg, png.

    Funziona tutto bene, l'unico problema è che se l'immagine è "molto" grande (a livello di pixel) non me la redimensiona...sapete come mai?

    Tutto funziona bene, non so esattamente fino a che risoluzione ma se provo con un'immagine 3264x2448 non va più niente. La stessa immagine a 1024x768 viene caricata.

    Lo script è questo:
    Codice PHP:
        function resize_image($image_type ""$image_file ""$dest_file ""$new_width 96) {
            if (( !
    $image_file != "" ) && ( !$image_type != "" )) {
                return 
    0;
            }

            if ( !
    file_exists($image_file) ) {
                return 
    0;
            }

            switch (
    trim($image_type)) {
                case 
    "image/gif":
                    
    $im = @imagecreatefromgif($image_file);
                    break;
                case 
    "image/jpeg":
                case 
    "image/pjpeg":
                    
    $im = @imagecreatefromjpeg($image_file);
                    break;
                case 
    "image/png":
                case 
    "image/x-png":
                    
    $im = @imagecreatefrompng($image_file);
                    break;
                default:
                    
    $im false;
                    break;
            }

            if ( !
    $im ) {
                return 
    0;
            }

            
    // Leggo le dimensioni originali dell'immagine
            
    $width imagesx($im);
            
    $height imagesy($im);

            
    // Imposto le nuove dimensioni dell'immagine
            
    $new_width = ($new_width 0) ? $new_width $width;
            
    $new_height = ($new_width 0) ? ($new_width $height) / $width $height;

            
    // Ridimensiono l'immagine
            
    $im_resized imagecreatetruecolor($new_width$new_height);

            
    // Conservo la trasparenza dell'immagine
            
    if( $image_type == "image/gif" || $image_type == "image/png" ) {
                
    $colorcount imagecolorstotal($im);
                if ( 
    $colorcount == $colorcount 256;
                
    imagetruecolortopalette($im_resizedtrue$colorcount);
                
    imagepalettecopy($im_resized$im);
                
    $transparentcolor imagecolortransparent($im);
                
    imagefill($im_resized00$transparentcolor);
                
    imagecolortransparent($im_resized$transparentcolor);
            }

            
    imagecopyresampled($im_resized$im0000$new_width$new_height$width$height);

            
    // Scrivo l'immagine sul disco
            
    if ( $dest_file == '' ) {
                
    $dest_file $image_file;
            }
            switch (
    $image_type) {
                case 
    "image/gif":
                    
    imagegif($im_resized$dest_file);
                    break;
                case 
    "image/jpeg":
                case 
    "image/pjpeg":
                    
    imagejpeg($im_resized$dest_file100);
                    break;
                case 
    "image/png":
                case 
    "image/x-png":
                    
    imagepng($im_resized$dest_file1);
                    break;
            }

            return 
    1;
        } 
    consigli?
    Administrator of NAMDesign.Net

  2. #2
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    è un fatto di limite di memoria.

    Potresti provare, se funziona, a cambiare il limite di memoria all’interno dello script php con la funzione:

    Codice PHP:
    ini_set("memory_limit""100M"); 
    dove 100M sono MegaByte
    Errare humanum est, perseverare ovest

  3. #3
    no, non è un limite sulla memoria perchè in locale tengo messo 16MB e l'immagine occupa 1.92MB....

    il problema è altrove...

    altri consigli?
    Administrator of NAMDesign.Net

  4. #4
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    Originariamente inviato da LeaderGL
    no, non è un limite sulla memoria perchè in locale tengo messo 16MB e l'immagine occupa 1.92MB....
    scusa, ma 1,92 MB con o senza compressione?

    Quando usi funzioni come imagecreatefromJpeg la memoria occupata non é uguale alla dimensione del file immagine.

    Per vedere la memoria che occupa devi moltiplicare larghezza per altezza per il numero dei bit utilizzati per i colori.
    Errare humanum est, perseverare ovest

  5. #5
    uhm...ho alzato il limite a 128MB...ed in effetti era quello il problema, anche se non pensavo fosse quello xkè la mia configurazione è:
    codice:
    memory_limit = 32MB;
    post_max_size = 16MB;
    upload_max_filesize = 8MB;
    ed una immagine a 3264x2448 a 24bit (come quella campione) dovrebbe pesare, scompressa, (3264*2448*24)/8 MB = 24MB (circa).

    Però alzando il limite è andato.

    Ti ringrazio.

    Però ora il mio problema è...come aggirare questo problema online?
    Administrator of NAMDesign.Net

  6. #6
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    con la funzione ini_set(); all'interno dello script potrebbe funzionare anche online, hai già provato?

    Oppure tocca avere accesso al file php.ini e cambiare 'php_value memory_limit'
    ma questo è difficile che te lo permettano in hosting.

    Se sei su Linux è probabilmente che ti permettono di configurare il file .htaccess, anche lì puoi aggiungere o modificare 'php_value memory_limit'
    Errare humanum est, perseverare ovest

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.