Creare thumb da immagini

enfix86

Nuovo Utente
27 Feb 2008
9
0
1
Ciao a tutti !!!
Ho un problema che non riesco proprio a risolvere.
Devo creare delle miniature (thumb) da delle immagini.
Ho organizzato il tutto in questo modo: nella cartella delle immagini creo una sottocartella "thumb" in cui metto le immagini miniaturizzate.

Il problema è questo: in locale tutto funziona perfettamente, mentre sul server no. Crea la cartella thumb, ma è vuota, senza nessuna thumb.

Vi posto del codice:
PHP:
function MakeThumb($file){
                
    $path_parts=pathinfo($file);
    
    $extension=$path_parts['extension'];
    $dir=$path_parts['dirname'];
    $file_name=$path_parts['filename'];
    
    if (!(file_exists($dir."/thumb")))
    {
      mkdir($dir."/thumb/", 0777);
      chmod($dir."/thumb", 0777);  
    }
    
    $src_img=false;    
    $thumb_file=$dir."/thumb/".$file_name."_thumb.".$extension;
    if (!file_exists($thumb_file) || !CheckThumb($file,$thumb_file)){
    
            if (preg_match('/jpg|jpeg/i',$extension)){
                $src_img=imagecreatefromjpeg($file)  or die ("Image not found!");
            }
            if (preg_match('/png/i',$extension)){
                $src_img=imagecreatefrompng($file)  or die ("Image not found!");
            }
            if (preg_match('/gif/i',$extension)){
                $src_img=imagecreatefromgif($file)  or die ("Image not found!");
            }
            
            if ($src_img) {
                $width = imagesx($src_img);
                $height = imagesy($src_img);
                $twidth = 150; # width of the thumb 160 pixel
                $theight = $twidth * $height / $width; # calculate height
                $thumb = @imagecreatetruecolor ($twidth, $theight) or die ("Can't create Image!");
                imagecopyresized($thumb, $src_img, 0, 0, 0, 0, $twidth, $theight, $width, $height);
                
                if (preg_match('/jpg|jpeg/i',$extension)){
                    Imagejpeg($thumb,$dir."/thumb/".$file_name."_thumb.".$extension);
                }
                if (preg_match('/png/i',$extension)){
                    Imagepng($thumb,$dir."/thumb/".$file_name."_thumb.".$extension);
                }
                if (preg_match('/gif/i',$extension)){
                    Imagegif($thumb,$dir."/thumb/".$file_name."_thumb.".$extension);
    
                }
                
                
                
            }
            
    }
    
    return $thumb_file;
        
}
Grazie mille a tutti dell'aiuto.....
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
posso dirti questo: se in locale funzia ed in remoto no può essere che sul server remoto non siano attive le librerie GD.
es. su aruba host windows le librerie non sono attive, su linux si.
e se non sono attive non le crea
 

enfix86

Nuovo Utente
27 Feb 2008
9
0
1
ho fatto una stampa di phpinfo().
Sembrano attive:

GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

no ?
 

enfix86

Nuovo Utente
27 Feb 2008
9
0
1
La cartella ha permessi 777 come da chmod.
Ho anche messo foto a 777, ma non va......
Se avete altre idee....grazie di tutto cmq....
 

enfix86

Nuovo Utente
27 Feb 2008
9
0
1
Ho provato anche su un altro spazio web, sempre linux.
Tutto sembra funzionare.
Non so cosa possa cambiare ??
Non ho mai lavorato molto con i file in php ma non mi è capitato mai una cosa così....
 

enfix86

Nuovo Utente
27 Feb 2008
9
0
1
Ok ci provo, ma il server è linux.
Io in locale utilizzo un Mac quindi non dovrebbero esserci differenze, tanto siamo in entrambi i casi in Unix.

Ti faccio comunque sapere....
 

enfix86

Nuovo Utente
27 Feb 2008
9
0
1
Forse ho trovato, ma chiedo conferma....
..sul sito dove non funzia ho safe_mode on.
Può essere un problema ??
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Non ne sono sicuro, ma prova a mettere questo all'inizio del tuo script:
PHP:
ini_set('safe_mode', 'off');
Ma hai un server condiviso? Perché di solito non è concesso di modificare i parametri del php.ini in runtime su questi server. Alternativamente, prova inserendo nel tuo file .htaccess questo:
Codice:
php_value safe_mode off
 

enfix86

Nuovo Utente
27 Feb 2008
9
0
1
Ho provato ora, ma non sembra funzionare.
Se imposto tramite int_set() o tramite htaccess non funziona entrambi.
Infatti se stampo con ini_get() mi da sempre 1, ovvero on !!!!
:dipser::dipser:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
se come avevi detto

...in locale funziona
Ho provato anche su un altro spazio web, sempre linux.
Tutto sembra funzionare....
credo che convenga interpellare il provider.

per esempio io ho dei siti su aruba e carico immagini (tumb e grandi) su linux e non devo dare alcun permesso alle cartelle

poi
Prova sostituendo tutte le / dei percorsi con \, su Windows si usano le backslash.
su windows uso / sensa alcun problema
 

enfix86

Nuovo Utente
27 Feb 2008
9
0
1
per esempio io ho dei siti su aruba e carico immagini (tumb e grandi) su linux e non devo dare alcun permesso alle cartelle
Il server dovrebbe essere aruba, infatti mi risulta strano che ci siano tutti questi problemi.
Dico dovrebbe perchè lo spazio sul server non è mio e lo script è per un altro.

Inoltre sto provando a creare la cartella tramite ftp, ma anche qui ci sono problemi, non me la crea !!!!
Infatti basterebbe risolvere questo, xchè ho notato che se la cartella thumb esiste, le immagini le crea correttamente.