Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-10-2009, 10:28   #1
tookie
Member
 
L'Avatar di tookie
 
Iscritto dal: Apr 2009
Messaggi: 50
[PHP]Problemi con libreria GD

Ciao a tutti,
Ho un piccolo problema con la libreria GD, e questa è la porzione di codice in questione. In pratica questa porzione di funzione in base al tipo di un immagine dopo gli opportuni accorgimenti la ridimensiona e salva una versione "media" in DIR_IMMAGINI definita in un file esterno e debitamente configurata per funzionare anche qui. Inoltre miniaturizza ulteriormente la stessa immagine e la salva in DIR_MIN sempre definita esternamente. Chiaramente la versione per intero tiene conto anche delle immagini png e gif con opportune funzioni come imagepng o imagecreatefromgif ecc.

Codice PHP:
function creaMiniatura($nome,$tipo){

    switch(
$tipo){
        case 
'image/jpeg':    
            
$srcimg=ImageCreateFromjpeg(DIR_IMMAGINI."/".$nome) or die("Problemi nell'aprire l'immagine jpg");

            if(
isBigger($srcimg)){
                
$width=ImageSX($srcimg)*0.3;
                
$height=ImageSY($srcimg)*0.3;
            }else{
                
$width=ImageSX($srcimg);
                
$height=ImageSY($srcimg);                
            }
            
is_orizontal($width, $height);
            
$destimg=ImageCreatetruecolor($width,$height) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width,$height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagejpeg($destimg,DIR_IMMAGINI."/".$nome,100) or die("Problemi nel salvataggio");
            
$destimg=ImageCreatetruecolor($width*0.2,$height*0.2) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width*0.2,$height*0.2,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagejpeg($destimg,DIR_IMMAGINI.DIR_MIN."/".$nome,100) or die("Problemi nel salvataggio");

            break; 
Questo meccanismo funziona perfettamente per le immagini jpeg, mentre per gif e png salva la versione "media" dell'immagine ma non quella miniaturizza in DIR_MIN

i permesssi sono i seguenti:
//function.php è il file dove è presente la funzione creaMinitura
-rwxrwxrwx 1 root root 8489 2009-10-29 09:20 function.php
drwxrwxrwx 3 root root 4096 2009-10-29 09:21 DIR_IMMAGINI

//mentre questo è l'interno della cartella DIR_IMMAGINI dove sono le immagini "medie", come si può vedere al suo interno c'è anche la directory DIR_MIN
-rw-r--r-- 1 www-data www-data 231692 2009-10-27 20:37 DSC00941.JPG
drwxrwxrwx 2 root root 4096 2009-10-29 09:21 DIR_MIN


Utilizzo PHP Version 5.2.6-3ubuntu4.2 .Ho provato di tutto e nei forum non ho trovato molto, qualcuno mi aiuta a capire perchè il tutto non funziona con gif e png?
tookie è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2009, 16:29   #2
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
A quel che si vede lo script fa il controllo del MIME e va avanti solo se è JPEG.
Tocca vedere il resto dello switch per capire se e come elabora gli altri formati.
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2009, 18:01   #3
tookie
Member
 
L'Avatar di tookie
 
Iscritto dal: Apr 2009
Messaggi: 50
Codice PHP:
function creaMiniatura($nome,$tipo){

    switch(
$tipo){
        case 
'image/jpeg':    
            
$srcimg=ImageCreateFromjpeg(DIR_IMMAGINI."/".$nome) or die("Problemi nell'aprire l'immagine jpg");

            if(
isBigger($srcimg)){
                
$width=ImageSX($srcimg)*0.3;
                
$height=ImageSY($srcimg)*0.3;
            }else{
                
$width=ImageSX($srcimg);
                
$height=ImageSY($srcimg);                
            }
            
is_orizontal($width, $height);
            
$destimg=ImageCreatetruecolor($width,$height) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width,$height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagejpeg($destimg,DIR_IMMAGINI."/".$nome,100) or die("Problemi nel salvataggio");
            
$destimg=ImageCreatetruecolor($width*0.2,$height*0.2) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width*0.2,$height*0.2,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagejpeg($destimg,DIR_IMMAGINI.DIR_MIN."/".$nome,100) or die("Problemi nel salvataggio");

            break;

        case 
'image/JPEG':
            
$srcimg=ImageCreateFromJPEG(DIR_IMMAGINI."/".$nome) or die("Problemi nell'aprire l'immagine JPG");break;
            if(
isBigger($srcimg)){
                
$width=ImageSX($srcimg)*0.3;
                
$height=ImageSY($srcimg)*0.3;
            }else{
                
$width=ImageSX($srcimg);
                
$height=ImageSY($srcimg);                
            }
            
is_orizontal($width, $height);
            
$destimg=ImageCreatetruecolor($width,$height) or die("Problemi nelle creazioni dell'immagine");            
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width,$height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
ImageJPEG($destimg,DIR_IMMAGINI."/".$nome,100) or die("Problemi nel salvataggio");
            
$destimg=ImageCreatetruecolor($width*0.2,$height*0.2) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width*0.2,$height*0.2,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
ImageJPEG($destimg,DIR_IMMAGINI.DIR_MIN."/".$nome,100) or die("Problemi nel salvataggio");

            break;

        case 
'image/gif':
            
$srcimg=ImageCreateFromgif(DIR_IMMAGINI."/".$nome) or die("Problemi nell'aprire l'immagine gif");break;
            if(
isBigger($srcimg)){
                
$width=ImageSX($srcimg)*0.3;
                
$height=ImageSY($srcimg)*0.3;
            }else{
                
$width=ImageSX($srcimg);
                
$height=ImageSY($srcimg);                
            }
            
is_orizontal($width, $height);
            
$destimg=ImageCreatetruecolor($width,$height) or die("Problemi nelle creazione dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width,$height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagegif($destimg,DIR_IMMAGINI."/".$nome,100) or die("Problemi nel salvataggio");
            
$destimg=ImageCreatetruecolor($width*0.2,$height*0.2) or die("Problema nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width*0.2,$height*0.2,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagegif($destimg,DIR_IMMAGINI.DIR_MIN."/".$nome) or die("Problemi nel salvataggio");

            break;

        case 
'image/GIF':
            
$srcimg=ImageCreateFromGIF(DIR_IMMAGINI."/".$nome) or die("Problemi nell'aprire l'immagine GIF");break;
            if(
isBigger($srcimg)){
                
$width=ImageSX($srcimg)*0.3;
                
$height=ImageSY($srcimg)*0.3;
            }else{
                
$width=ImageSX($srcimg);
                
$height=ImageSY($srcimg);                
            }
            
is_orizontal($width, $height);
            
$destimg=ImageCreatetruecolor($width,$height) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width,$height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
ImageGIF($destimg,DIR_IMMAGINI."/".$nome,100) or die("Problemi nel salvataggio");
            
$destimg=ImageCreatetruecolor($width*0.2,$height*0.2) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width*0.2,$height*0.2,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
ImageGIF($destimg,DIR_IMMAGINI.DIR_MIN."/".$nome) or die("Problemi nel salvataggio");

            break;

        case 
'image/png':
            
$srcimg=ImageCreateFrompng(DIR_IMMAGINI."/".$nome) or die("Problemi nell'aprire l'immagine png");break;
            if(
isBigger($srcimg)){
                
$width=ImageSX($srcimg)*0.3;
                
$height=ImageSY($srcimg)*0.3;
            }else{
                
$width=ImageSX($srcimg);
                
$height=ImageSY($srcimg);                
            }
            
is_orizontal($width, $height);
            
$destimg=ImageCreatetruecolor($width,$height) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width,$height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagepng($destimg,DIR_IMMAGINI."/".$nome,100) or die("Problemi nel salvataggio");
            
$destimg=ImageCreatetruecolor($width*0.2,$height*0.2) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width*0.2,$height*0.2,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagepng($destimg,DIR_IMMAGINI.DIR_MIN."/".$nome) or die("Problemi nel salvataggio");

            break;

        case 
'image/PNG':
            
$srcimg=ImageCreateFromPNG(DIR_IMMAGINI."/".$nome) or die("Problemi nell'aprire l'immagine PNG");break;
            if(
isBigger($srcimg)){
                
$width=ImageSX($srcimg)*0.3;
                
$height=ImageSY($srcimg)*0.3;
            }else{
                
$width=ImageSX($srcimg);
                
$height=ImageSY($srcimg);                
            }
            
is_orizontal($width, $height);
            
$destimg=ImageCreatetruecolor($width,$height) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width,$height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
ImagePNG($destimg,DIR_IMMAGINI."/".$nome,100) or die("Problemi nel salvataggio");
            
$destimg=ImageCreatetruecolor($width*0.2,$height*0.2) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width*0.2,$height*0.2,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
ImagePNG($destimg,DIR_IMMAGINI.DIR_MIN."/".$nome) or die("Problemi nel salvataggio");

            break;
        default: die(
"formato sconosciuto");break;
    }
} 
tookie è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2009, 19:50   #4
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Ma per quale versione di PHP è stato realizzato questo script?
Attualmente PHP è in grado di riconoscere automaticamente il formato di un file immagine col comando imagecreatefromstring(file_get_contents("file_immagine")) senza dover fare delle procedure diverse (if, switch, ecc.) per ogni formato.
Prova così, poi vediamo.
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2009, 10:06   #5
tookie
Member
 
L'Avatar di tookie
 
Iscritto dal: Apr 2009
Messaggi: 50
Quote:
Utilizzo PHP Version 5.2.6-3ubuntu4.2 .Ho provato di tutto e nei forum non ho trovato molto, qualcuno mi aiuta a capire perchè il tutto non funziona con gif e png?
ok, appena ho un momento libero provero come dici tu
tookie è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2009, 17:56   #6
tookie
Member
 
L'Avatar di tookie
 
Iscritto dal: Apr 2009
Messaggi: 50
Ho appena provato con ImageCreateFromstring
Codice PHP:
function creaMiniatura($nome,$tipo){

            
$srcimg=ImageCreateFromstring(DIR_IMMAGINI."/".$nome) or die("Problemi nell'aprire l'immagine jpg");

            if(
isBigger($srcimg)){
                
$width=ImageSX($srcimg)*0.3;
                
$height=ImageSY($srcimg)*0.3;
            }else{
                
$width=ImageSX($srcimg);
                
$height=ImageSY($srcimg);                
            }
            
is_orizontal($width, $height);
            
$destimg=ImageCreatetruecolor($width,$height) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width,$height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagejpeg($destimg,DIR_IMMAGINI."/".$nome,100) or die("Problemi nel salvataggio");
            
$destimg=ImageCreatetruecolor($width*0.2,$height*0.2) or die("Problemi nelle creazioni dell'immagine");
            
ImageCopyResized($destimg,$srcimg,0,0,0,0,$width*0.2,$height*0.2,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
            
Imagejpeg($destimg,DIR_IMMAGINI.DIR_MIN."/".$nome,100) or die("Problemi nel salvataggio");
            
Imagedestroy($destimg);
} 
nonostante questa funzione mi snellisca il codice, purtroppo non funziona...mi torna il seguente errore con ogni formato di immagine comune(jpg,gif,png)

Codice:
Warning: imagecreatefromstring() [function.imagecreatefromstring]: Data is not in a recognized format in /var/www/gallery/function.php on line 89
Problemi nell'aprire l'immagine jpg
tookie è offline   Rispondi citando il messaggio o parte di esso
Old 31-10-2009, 13:55   #7
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Se il comando imagecreatefromstring(file_get_contents($file)) non funziona il problema è nell'immagine.

Per fare un test usa:

Codice:
<?PHP
$file = "file_immagine.jpg";
$img = imagecreatefromstring(file_get_contents($file));
if ( $img == false ) {
    echo "Formato file non valido\n";
    exit(1);
} else {
    echo "Formato file OK\n";
}
?>
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2009, 16:39   #8
tookie
Member
 
L'Avatar di tookie
 
Iscritto dal: Apr 2009
Messaggi: 50
ho scoperto che avevo fatto un errore di sintassi in imagecreatefromstring, ora funziona tutto correttamente, grazie per l'aiuto
tookie è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2009, 18:50   #9
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Eh, infatti mi sembrava strano!
Meglio così, hai risolto anche il problema iniziale delle immagini che non caricava?
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2009, 08:57   #10
tookie
Member
 
L'Avatar di tookie
 
Iscritto dal: Apr 2009
Messaggi: 50
sisi adesso funziona tutto, grazie per la dritta
tookie è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Xiaomi avrebbe cancellato il suo prossim...
WINDTRE BUSINESS rinnova l’offerta mobil...
BMW inaugura la fabbrica di batterie da ...
Googlebook apre al modding: bootloader s...
Denuvo non molla, vuole scoprire chi &eg...
Il miglior portatile tuttofare a basso p...
Gli agenti di OpenAI hanno mandato in ti...
Follie Amazon Prime: Zenbook è un...
MicroSD SanDisk in offerta Prime Day: Ul...
Steve Jobs, 15 anni dopo: John Ternus e ...
LaLiga chiede all'Europa di inserire qua...
Microsoft festeggia cinque anni di Windo...
WhatsApp blocca l'accesso sui telefoni n...
AMD non riesce a stare dietro alla doman...
Android Auto: stop alla compatibilità pe...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:56.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v