Salve a tutti
ieri ho frugato nel forum e qualcosa sulle gd ho trovato ma siccome continuo ad avere il solito errore volevo chiedere se potevo postare il codice per avere qualche aiuto da voi che ne sapete MOLLLTO più di me!
Grazie
Rudy
Salve a tutti
ieri ho frugato nel forum e qualcosa sulle gd ho trovato ma siccome continuo ad avere il solito errore volevo chiedere se potevo postare il codice per avere qualche aiuto da voi che ne sapete MOLLLTO più di me!
Grazie
Rudy
www.queenarena.com
ma se magari invece di chiedere se puoi postare il codice.. illustri prima il problema ed in particolare riporti il messaggio d'errore........
![]()
Allora vi illustro bene il problema:
ho una tabella nel databse con una serie di record e ogni record ha un foto.
Bene: mi servirebbe creare una lista di queste foto a 30 x 30 senza doverle avere due volte sul server.
Questa operazione si basa su immagini originali della stessa dimensione 250 * 250
LO stesso procedimento mi servirebbe per altre foto che però non sono tutte uguali e quindi bisognerebbe fare anche un resample.
Bene ho provato ad usare gli esempi che ho trovato qua nel forum ma mi danno sempre errore di 2 tipi: o una serie di caratteri in fila invece dell'immagine o un errore di divide by zero.
La cosa che mi preme di più pero' è capire qual'è la successione dei comandi per manipolare dell foto: la prima operazione è caricare la foto originale con imgcreatefromjpeg poi usare imagecreatetruecolor e poi imagejpeg oppure mi sbaglio?
MI fareste un favorone se riusciste a farmi capire il meccanismo
Grazie e scusate la lunghezza del post
Rudy
www.queenarena.com
quello che segue è parte dello script che uso sul mio sito:
Questo però crea le miniature grandi 1/10 dell'originale (solo jpeg)... nel tuo caso, visto che conosci a priori le dimensioni iniziali e finali, lo script si semplifica...Codice PHP:
function LoadJpeg ($imgname) {
$size=getimagesize($imgname);
$src_img=imagecreatefromjpeg($imgname);
$larg=ceil($size[0]/10);
$alte=ceil($size[1]/10);
$im=Imagecreatetruecolor($larg,$alte);
imagecopyresampled($im,$src_img,0,0,0,0,$larg,$alte,$size[0],$size[1]);
return $im;
}
if (file_exists($_GET['immagine'])){
$immagine=LoadJpeg($_GET['immagine']);
header("content-type: image/jpeg");
imagejpeg($immagine,"",40);
imagedestroy($immagine);
} else {
echo "il file non esiste";
}
Se in output ricevi una serie di lettere e perchè ti manca
header("content-type: image/jpeg");
che devi inserire prima di qualsiasi altro output!
grazie della risposta.
Ho provato ma mi dice sempre che il file non esiste e "resource ID8".
Considera che io lavoro sulla variabile $estratta dal Database che contiene il apth ad una immagini sul server.
Dove sbaglio?
sarà perchè ho un percorso nel record del DB?
Grazie
Rudy
www.queenarena.com
evidentemente il file non esiste nel path che gli passi:
fai un echo della variabile che dovrebbe contenere il path
i path sono relativi o assoluti?
fai un esempio dei path e di come sono impostate le cartelle...
sei su win o su linux?
i path sono corretti, tenendo conto della posizione del file dello script (se relativi)?
Come passi il contenuto della request al DB alla variabile $imgname?
Posta almeno parte del codice!
Ciao
allora il server è su linux con apache e roba varia con ultime release di GD.
Allora io spero di avere capito bene cosa fare, considera che sono proprio principiante e che sto trovando duro da matti! .
il path si viene a trovare nella variabile $img ed è una cosa relativa tipo pics/cartella/file.jpg
ti posto una parte del codice:
****
<?
require_once("admin/config.inc.php"); ?>
<table><tr>
<?
$result = mysql_query("SELECT img FROM Albums WHERE id='5' ");
function LoadJpeg ($imgname) {
$size=getimagesize($imgname);
$src_img=imagecreatefromjpeg($imgname);
$larg=ceil($size[0]/10);
$alte=ceil($size[1]/10);
$im=Imagecreatetruecolor($larg,$alte);
imagecopyresampled($im,$src_img,0,0,0,0,$larg,$alt e,$size[0],$size[1]);
return $im;
}
if (file_exists($_GET['immagine'])){
$immagine=LoadJpeg($_GET['immagine']);
header("content-type: image/jpeg");
imagejpeg($immagine,"",40);
imagedestroy($immagine);
} else {
echo "il file non esiste";
}
list($img) = mysql_fetch_row($result);
echo LoadJpeg ($img);
?>
</tr>
</table>
ovviamente avrò fatto più errori di un bambino alle elementari ma mi preme capire il meccanismo!
Grazie di tutto
Rudy
www.queenarena.com
per il codice usa il tasto PHP!
innanzitutto controllerei se la variabile $img contiene il path giusto... cioè deve puntare all'immagine relativamente a dove sta lo script![]()
Allora lo script è al di fuori delle cartelle dove si trova l'immagine;
considera che la variabile "img" che risulta dalla query contiene "pics/cartella/file.jpg mentre lo script è fuori dalla cartella, nella root.
Però estraendo il valore della path dovrebbe trovarlo.
Invece mi dice che il file non esiste: se provo a fare un echo con il tag IMG me la visualizza quindi il path è giusto.
La grana è che non riesco a fare un tubo! E la cosa che mi frustra è non riuscire a capire dove sta l'inghippo.
La funzione va bene come la richiamo? LoadJpeg($img) però cos' facendo la visualizza o devo usare anche il tag IMG?
Argh non ne posso +!!!!
Rudy
www.queenarena.com
Dividi il codice in 2 files:
nel primo fai la query al db e chiami il secondo file (per ogni immagine crei la nuova miniatura) passandogli il contenuto della variabile $img
nel secondo crei la miniatura e la stampi
guarda come ho fatto io: http://www.andreapaiola.it/tutorials.php (devi scrollare un pochettino...)
le differenze principali col tuo script è che io non utilizzo db e faccio un ciclo for...