|
Forum Flash, Actionscript, PHP e MySQL
|
|
|
|
|
|
| Autore |
Messaggio |
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto: ridimensionamento immagini in php
Inviato: 01.05.07 | 12:15 |
|
|
ciao, ho trovato questo codice in php ed ora lo sto sistemando, ho trovato degli errori però che nn riesco a correggere... mi potete dare una mano?
questa è la prima pag con i form e finora qui tutto ok
| Codice: | <html>
<head>
<style>
body{font-family:verdana;font-size:12px}
table{font-family:verdana;font-size:12px}
h1{font-family:verdana;font-size:20px;font-weight:bold}
</style>
<title>Ridimensiona immagine</title>
</head>
<body>
<center>
<h1>Ridimensiona immagine</h1>
<!--MODIFICARE nome-script.php con il nome del file che avete creato-->
<form action="a.php" method="post" enctype="multipart/form-data">
<table border="1" cellpadding="10">
<tr>
<td><b>Immagine: (jpg o png)</b></td>
<td align="right"><input type="file" name="img" size="20"></td>
</tr>
<tr>
<td><b>Larghezza: (in pixel)</b></td>
<td align="center"><input type="text" name="width" size="5" value="150"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="Ridimensiona"></td>
</tr>
</table>
</form>
</body>
</html> |
la seconda pag è impostata così, il primo errore che ho riscontrato
Notice: Undefined index: width in c:\programmi\easyphp1-8\www\dvd_list\a.php on line 25
La larghezza deve essere un numero intero
qui l'avevo risolto temporaneamente mettendo un num fisso al posto della variabile... secondo errore
Notice: Undefined index: width in c:\programmi\easyphp1-8\www\dvd_list\a.php on line 25
Notice: Undefined index: img in c:\programmi\easyphp1-8\www\dvd_list\a.php on line 29
Errore nell’upload del file
| Codice: | <?
# MODIFICARE le 4 variabili qui sotto con le impostazioni del vostro server e il nome del file (31 righe più giù) all’interno del form html
#ATTENZIONE: per funzionare lo script avrà bisogno che le cartelle qui sotto siano accessibili il scrittura, settate gli opportuni permessi
$imgpathbig = "./images/"; # path assoluto dove lo script appoggerà l’immagine che inviate
$imgurlbig = "./images/"; # url dell’immagine grande, se volete che questa venga visualizzata
$imgpathsmall = "./images/"; # path assoluto dove lo script creerà l’immagine ridimensionata
$imgurlsmall = "./images/"; # url dell’immagine piccola
/*
COMPATIBILITA’
$_FILES in 4.1.0, prima $HTTP_POST_FILES
is_uploaded_file, move_uploaded_file, in 4.0.3
rand, senza chiamata a srand in 4.2.0. Se inferiore aggiungere srand((double) microtime() * 1000000);
imagecreatetruecolor in 4.0.6
*/
#questo è un form essenziale per inviare allo script le immagini.
#Assegno alla variabile width il valore scritto nel form e controllo che sia un numero
$width = $_POST["width"];
if(!is_numeric($width)) { print("<center><b>La larghezza deve essere un numero intero"); exit; }
#Controllo se il file è stato inviato; controllo se il file è un immagine jpg o png e assegno alla variabile ext l’estensione giusta
if (!is_uploaded_file($_FILES["img"]["tmp_name"])) { print("<center><b>Errore nell’upload del file"); exit; }
if($_FILES["img"]["type"] == "image/jpeg") { $ext = "jpg";
} elseif($_FILES["img"]["type"] == "image/png") { $ext = "png";
} else { print("<center><b>L’immagine può essere solo jpeg o png"); exit; }
#Genero un nome per il file inviato casualmente, questo perchè se lo script viene utilizzato da più persone c’è il rischio che si operi sugli stessi files contemporaneamente.
#Se lo utilizzate per "uso personale" potete anche saltare. Mettete il commento (#) davanti alla riga qui sotto e toglietelo da quella successiva.
$nomefile = rand(1, 100);
#$nomefile = $_FILES["img"]["name"];
#Definisco il path delle due immagini
$filebig = $imgpathbig . $nomefile . "." . $ext;
$filesmall = $imgpathsmall . "TN" . $nomefile . "." . $ext;
#Sposto il file inviato dal form nella directory scelta e con il nome definito sopra
move_uploaded_file($_FILES["img"]["tmp_name"], $filebig) or die("<center>Errore durante l’upload del file");
#Genero l’immagine ridimensionata
function makethumb($name, $thname, $width) {
#Vedo se il file è jpg o png e creo un immagine di conseguenza
$data = GetImageSize($name,$info);
switch ($data[2]) {
case 1: #copy($name,$thname);
return;
break;
case 2:
$im = @imagecreatefromjpeg($name);
break;
case 3:
$im = @imagecreatefrompng($name);
break;
}
#Assegno alle variabili w e h rispettivamente la larghezza e l’altezza dell’immagine originale
$w=ImageSX($im);
$h=ImageSY($im);
#Creo un divisore per mantenere le proporzioni dell’immagine
$div = $w / $width;
#Calcolo l’altezza dell’immagine ridimensionata
$nh = $h / $div;
#Creo l’immagine ridimensionata
$ni=ImageCreatetruecolor($width,$nh);
ImageCopyResized($ni,$im,0,0,0,0,$width,$nh,$w,$h);
if($data[2] == 2) ImageJPEG($ni,$thname,100);
if($data[2] == 3) ImagePNG($ni,$thname,100);
}
#Richiamo la funzione
makethumb($filebig, $filesmall, $width);
#Cancello l’immagine grande, se volete mantenerla nella cartella che avete specificato sopra mettete un commento (#) davanti a questa riga
#unlink($filebig);
#Mostro l’immagine ridimensionata
?>
<html><head><title>Immagine ridimensionata</title>
<center>
Immagine piccola<br>
<img src="<?= $imgurlsmall ?>TN<?= $nomefile ?>.<?= $ext ?>" alt="Immagine ridimensionata">
<?
#Se volete, sotto l’immagine ridimensionata, posso farvi vedere anche l’immagine grande (se avete impostato in cima al file la variabile imgurlbig). Per farla visualizzare dovete togliere il commento dalla riga sotto e mettere il commento davanti a unlink($filebig), 8 righe sopra
print("<br><br>Immagine grande<br><img src=’$imgurlbig$nomefile.$ext’ alt=’Immagine grande’>");
?> |
come li risolvo? grazie il anticipo |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 01.05.07 | 16:05 |
|
|
Ciao mesk8,
che versione delle librerie GD e di PHP hai nel server?
Quei notice non sono veri errori, ma notifiche... ad esempio ti notifica che la variabile: $width non è definita.
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 01.05.07 | 18:04 |
|
|
sto lavorando in locale intanto...
ho easyPHP 1.8.0.1 e phpMyAdmin-2.7.0-pl2, intendevi questo per versioni?
cmq ho anche provato a fare degli echo del tipo echo $_POST["width"]; ma nn va |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 01.05.07 | 21:18 |
|
|
sì ce l'ho su off, ho riguardato a fondo i codici e c'erano alcune cose che nn erano proprio corrette tipo i tag <center> davano fastidio (li ho sostituiti con <div align="center">)... Ora riesco a controllare tutte le variabili dei form e sono riuscito a copiare l'immagine
quello che nn va ora è qui
| Codice: | <?
#Genero l’immagine ridimensionata
function makethumb($name, $thname, $width) {
#Vedo se il file è jpg o png e creo un immagine di conseguenza
$data = getimagesize($name,$info);
switch ($data[2]) {
case 1: #copy($name,$thname);
return;
break;
case 2:
$im = @imagecreatefromjpeg($name);
break;
case 3:
$im = @imagecreatefrompng($name);
break;
}
#Assegno alle variabili w e h rispettivamente la larghezza e l’altezza dell’immagine originale
$w=imagesx($im);
$h=imagesy($im);
#Creo un divisore per mantenere le proporzioni dell’immagine
$div = $w / $width;
#Calcolo l’altezza dell’immagine ridimensionata
$nh = $h / $div;
#Creo l’immagine ridimensionata
$ni=imagecreatetruecolor($width,$nh);
imagecopyresized($ni,$im,0,0,0,0,$width,$nh,$w,$h);
if($data[2] == 2) imagejpeg($ni,$thname,100);
if($data[2] == 3) imagepng($ni,$thname,100);
}
#Richiamo la funzione
makethumb($filebig, $filesmall, $width);
?> |
da questo punto in poi nn fa più nulla (ho già corretto alcune cose che nn andavano nella funzione), ma il problema persiste perchè nn mi crea l'immagine ridimensionata
Magari sono proprio le librerie GD che mi mancano... |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 02.05.07 | 11:08 |
|
|
ho guardato x le librerie GD e ce le ho...
cmq provando con uno script semplice x creare un'immagine del tipo:
| Codice: | <?php
header("Content-type: image/png");
// creo l'immagine
$img = imagecreate(100, 150);
// colore di sfondo
$back = imagecolorallocate($img, 255, 255, 255); // hex #FFFFFF
// rettangolo pieno
$rectColor = imagecolorallocate(187, 187, 187); // hex #BBBBB
imagefilledrectangle($img, 20, 20, 80, 130, $rectColor);
// stampa l'immagine
imagepng($img);
?> |
come risultato da
L'immagine “http://127.0.0.1/dvd_list/librerie.php” non può essere visualizzata poiché contiene degli errori.
e nessuna immagine, l'errore dovrebbe essere nel $img = imagecreate(100, 150); ma nn capisco dove |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 02.05.07 | 13:42 |
|
|
grazie delle risp, ora che mi fai notare c'è anche un $back che viene creato ma nn viene richiamato da nessuna parte... e qst immagini poi dove vengono salvate? ho provato tante di quelle stringhe di codice ormai ma finora di immagini nn vedo neanke l'ombra... sob! |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 07.05.07 | 15:30 |
|
|
Eh si,
come stai scrivendo tu il code PHP, è lo script PHP la tua immagine (vedi: header("Content-type: image/png");)
Se vuoi creare fisicamente le immagini devi utilizzare uno dei seguenti metodi:
» imagecopy
» imagecopyresampled
» imagecopyresized
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 07.05.07 | 17:29 |
|
|
infatti io dovrei usare imagecopyresized (primo codice postato), l'ultimo script (si può dire script in PHP?) invece l'ho provato per vedere se riuscivo a creare in locale un'immagine e quindi almeno sapere che EasyPHP mi permette di ridimensionare e/o creare immagini... Il fatto è che com tutti i codici che ho provato non sono riuscito ad avere 1immagine, ho il dubbio quindi allora che il problema non sia nei codici, ma altrove... Mi basterebbe quindi ora avere un piccolo script (anche elementare) che so di certo che funziona, che se quindi da me nn dovesse andare sapere almeno dove andare a correggere...
Se invece ha esito positivo capire dove sbaglio e quindi correggo
a farla breve quindi:
_ o è settato male EasyPHP
_ o sbaglio io
aiutino? |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 07.05.07 | 21:35 |
|
|
ok ho provato questo codice, come risultato ho:
Fatal error: Call to undefined function: imagecreate() in ***miofile***.php on line 8
ho quindi fatto un'altra prova aggiungendo in cima
| Codice: | <?php
header("Content-type: image/png");
?> |
il risultato ora è
L'immagine “***miofile***.php” non può essere visualizzata poiché contiene degli errori.
è sbagliato qualche settaggio nelle librerie GD che ho?
ho fatto quindi qualche ricerca su internet trovando questo sito Introduzione_alla_libreria_GD, dice di scrivere per assicurarsi di disporre delle librerie GD
| Codice: | <?php
phpinfo();
?> |
a me xo pare di averle, ma magari mi sbaglio... |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 08.05.07 | 01:02 |
|
|
Come ti pare di averle?
Hai abilitato l'estensione da EasyPHP?
...e poi, se con i codice precedenti le visualizzavi, le GD ci sono di sicuro.
Comunque facendo il phpinfo() vedi se sono abilitato o meno.
. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
mesk8
avanzato


Età: -1984
Registrato: 31/10/05 16:41
Messaggi: 252
Località: Verona
|
Oggetto:
Inviato: 08.05.07 | 08:39 |
|
|
partito!!!! wow, mi ha fatto sudare xò...
avevo sbagliato una piccola configurazione di easyphp |
|
| Torna in cima |
|
|
|
|
Non puoi inserire nuovi Topic in questo forum Non puoi rispondere ai Topic in questo forum Non puoi modificare i tuoi messaggi in questo forum Non puoi cancellare i tuoi messaggi in questo forum Non puoi votare nei sondaggi in questo forum Non puoi allegare files in questo forum Non puoi downloadare gli allegati in questo forum
|
|