immagini

Immaginate un elenco di schede di articoli con accanto l'immagine ridimensionata per poi cliccarci sopra e vedere l'immagine in grande.

Dovrei quindi creare un immagine ridimensionata che rispetti l'immagine stessa, di certo non posso mica fare delle ridimensioni fisse..ad esempio una foto di un edificio alto deve essere stretta e lunga, invece un quadro deve avere sia larghezza e altezza quasi uguali. Insomma vorrei fare un ridimensionamento a percentuale ...penso che sia la soluzione giusta.

QUindi prendere le dimensione dell'immagine formato grande  e ridurla ..ad esempio del 60 %.

Come potrei fare ? Pensavo di ricavare i valori di width ed height dell'immagine e con una formula matematica ridurle in percentuale....

inviato 11 anni fa
Toto007
X 0 X

Devi usare le funzioni GD. In particolare ti serve la funzione getimagesize per determinare le dimensioni iniziali dell'immagine, poi devi inizializzare una nuova immagine con la funzione imagecreatetruecolor (versione GD = 2) o imagecreate (versione GD = 1) ed inquesta nuova immagine inserire quella originale ridotta con imagecopyresampled (versione GD = 2) o con imagecopyresized (versione GD = 1)

Infine le salvi con le funzioni imagejpeg, imagegif e imagepng

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

sono riuscito a realizzare lo script sul sito ...però per provare in locale non ho capito come installare le librerie per windows

risposto 11 anni fa
Toto007
X 0 X

vai nel php.ini e togli il punto e virgola davanti alla riga ;extension=php_gd2.dll

riavvia Apache

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

ok...perfietto  O0

risposto 11 anni fa
Toto007
X 0 X

ehm..mi risulta un problema...

questo è lo script ke uso:

$filename = 'battaglia.jpg';

$percent = 0.5;

// Get new dimensions

list($width, $height) = getimagesize($filename);

$new_width = $width * $percent;

$new_height = $height * $percent;

// Resample

$image_p = imagecreatetruecolor($new_width, $new_height);

$image = imagecreatefromjpeg($filename);

imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Output

imagejpeg($image_p, null, 100);

arrivato all'output mi scrive il contenuto del file jpg....più tosto ke visualizzarmi l'immagine..

ho provato a mettere

sopra header('Content-type: image/jpeg'); però mi da errore....

se lo faccio con una pagina pulita ..funziona...

risposto 11 anni fa
Toto007
X 0 X

quello script crea l'immagine e la restituisce direttamente al browser, non la salva in un altro file. Per far capire al browser che ciò che sta per ricevere è una immagine si manda proma di tutto una intestazione:

header('Content-type: image/jpeg');

altrimenti il browser pensa che gli sta per arrivare del testo. Poi gli si invia il contenuto dell'immagine con la funzione imagejpeg.

Per questo motivo questa pagina non può e non deve generare altro output all'infuori dell'intestazione e del contenuto dell'immagine. Qualsiasi altra cosa prodotta da tale script creerà errore.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

come faccio a scrivere con fwrite l'immagine ? oppure senza che la salvo su file ...visualizzarla direttamente...

risposto 11 anni fa
Toto007
X 0 X

ok ho fatto così

imagejpeg($image_p, 'prova22.jpg', 100);

e funziona . Tnx :)

risposto 11 anni fa
Toto007
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda