estensione librerie GD

  • Creatore Discussione Creatore Discussione pas1000
  • Data di inizio Data di inizio

pas1000

Nuovo Utente
20 Dic 2006
24
0
0
Ciao,
prendendo spunto da un tutorial per il ridimensionamento delle immagini ho fatto il seguente script:

// Ottengo le informazioni sull'immagine originale
list($width, $height, $type, $attr) = getimagesize($_FILES['immagine']['tmp_name'].'/img_cartoline/$img_name');

// Creo la versione 120*90 dell'immagine (thumbnail)
$thumb = imagecreatetruecolor(120, 90);
$source = imagecreatefromjpeg($_FILES['immagine']['tmp_name'].'/img_cartoline/$img_name');
imagecopyresized($thumb, $source, 0, 0, 0, 0, 120, 90, $width, $height);

// Salvo l'immagine ridimensionata
imagejpeg($thumb, $_FILES['immagine']['tmp_name']."/img_cartoline/a.jpg", 75);
//imagejpeg($thumb, $_SERVER['DOCUMENT_ROOT']."/img_cartoline/'mini_'.'img_name'", 75);

ma non funziona. Ho contattato il provaider e le librerie GD sono abilitate. Non è che a inizio script bisogna mettere del codice per richiamare le librerie?
 
Non penso che la path scritta in questo modo abbia senso:
PHP:
$_FILES['immagine']['tmp_name'].'/img_cartoline/$img_name');

Molto più probabile:
PHP:
$path = '/img_cartoline/';
$img_name = $path.$_FILES['immagine']['tmp_name'];

quindi:

PHP:
getimagesize($img_name);
etc.

:byebye:
 
Se ho capito bene è così:

// Ottengo le informazioni sull'immagine originale
$path = '/img_cartoline/';
$img_name = $path.$_FILES['immagine']['tmp_name'];
list($width, $height, $type, $attr) = getimagesize($img_name);

// Creo la versione 120*90 dell'immagine (thumbnail)
$thumb = imagecreatetruecolor(120, 90);
$source = imagecreatefromjpeg($img_name);
imagecopyresized($thumb, $source, 0, 0, 0, 0, 120, 90, $width, $height);

// Salvo l'immagine ridimensionata
imagejpeg($thumb, $img_name, 75);

ma ancora non và.:confused: (non copia l'immagine rimpicciolita sull'originale?)
Lo script l'ho copiato da qui https://www.mrw.it/tutorial/php/tutorial671.htm
 
Grazie. Stò su altervista.
Ho risolto il problema, e usando la formula per le proporzioni ottengo un ridimensionamento proporzionale.
 
io ne ho appena provato un altro di codice ma che mi perde i colori reali delle immagini quando mi crea la thumbnail, anche se la compressione è pari a 100 (qualità massima) :dipser:

non riesco a capire il perchè. saresti così gentile da postare qui la tua funzione modificata per il ridimensionamento proporzionale?

grazie mille.
michele
 
Non faccio uso di una funzione

// Ottengo le informazioni sull'immagine originale
list($width, $height, $type, $attr) = getimagesize($img_temp);

if($width<$height){
$altezza=(100*$height)/$width;
$larghezza=130;
}
else{
$larghezze=(100*width)/height;
$altezza=130;
}
// Creo la versione ridotta dell'immagine (thumbnail)
$thumb = imagecreatetruecolor($larghezza, $altezza);
$source = imagecreatefromjpeg($img_temp);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $larghezza, $altezza, $width, $height);

// Salvo l'immagine ridimensionata
imagejpeg($thumb, "../img_cartoline/mini_$img_name", 75);

nel mio caso l'immagine è stata inviata con un form e salvata in una sottocartella modificando leggermente il nome.
Spero ti sia utile.:byebye:
 
ciao pas,
ti ringrazio. prenderò spunto dalla tua procedura per il ridimensionamento in % .

nel frattempo ti consiglio di creare una funzione da quella procedura, in modo da non dover riscrivere tutto quel codice per ottenere lo stesso effetto. basterà solo passare i parametri principali.

se ti può essere d'aiuto, eccoti la funzione:

PHP:
		function thumbnail($img_dir, $thumb_dir, $thumb_width, $thumb_height, $thumb_comp)
		{
			// Ottengo le informazioni sull'immagine originale
			list($width, $height, $type, $attr) = getimagesize($img_dir);
			
			// Creo la versione 120*90 dell'immagine (thumbnail)
			$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
			$source = imagecreatefromjpeg($img_dir);
			imagecopyresized($thumb, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height);
			
			// Salvo l'immagine ridimensionata
			imagejpeg($thumb, $thumb_dir, $thumb_comp);
		}

e dove vuoi ottenere il resize basta che stabilisci i parametri e richiami la funzione:

<?php
$img = "/web/htdocs/www.sito.it/home/images/vacanze/$row[foto]"; // percorso al file dell'immagine
$dest = "/web/htdocs/www.sito.it/home/images/vacanze/miniature/$row[foto]"; // directory miniature create
// dimensioni della miniatura da creare
$thumbWidth = 200; // larghezza
$thumbHeight = 150; // altezza
$thumbComp = 75; // livello di compressione della miniatura
thumbnail($img, $dest, $thumbWidth, $thumbHeight, $thumbComp);
?>

ciao e grazie ;)
 

Discussioni simili