- Home
- Categorie
- Coding e Sistemistica
- PHP
- [PHP] Librerie GD
-
A quel link c'erano link di varie guide, vedi se riesci ad adattarne qualcuno...
-
@Thedarkita said:
A quel link c'erano link di varie guide, vedi se riesci ad adattarne qualcuno...
si..ho letto quella su satgroup
[PHP]
//Le funzioni che utilizzeremo sono:imageCreateFromJPEG() crea una immagine .jpg.
imageSX() prende la lunghezza dell’immagine.
imageSY() prende la larghezza dell’immagine.
ImageCreateTrueColor() crea un oggetto truecolour image.
imageCopyResampled() rimpicciolisce l’immagine.function resize($source_file, $output_file, $size, $quality)
{
//jpeg resizer
$success = false;
list($width, $height) = getimagesize($source_file);$new_width = intval(($width * $size) / max($width, $height));
$new_height = intval(($height * $size) / max($width, $height));if ( $image_in = imagecreatefromjpeg($source_file) )
{
if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
{
imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ( imagejpeg($image_out, $output_file, $quality) )
{
$success = true;
}
imagedestroy($image_out);
}
imagedestroy($image_in);
}
return $success;
}
[/PHP]questo codice da quello che sn riuscito a capire tira in ballo delle variabili che dovrebbero essere già state impostate in precedenza..
tipo
[PHP]$source_file, $output_file, $size, $quality[/PHP]questa guida parte già con dei dati che dovrei avere o sapere che io non so...
non so se mi sono spiegato bene
su queste ultime 4 variabili dovrei impostare il percorso iniziale ,destinazione della thumbnails,grandezza della thumbnails,e qualità..?:?
-
Dovresti semplicemente sapere come come si utilizza una funzione, dovresti studiarti prima un pò di teoria, perchè se parti da 0 buttandoti sul codice credo che avrai molte più difficoltà.
in ogni caso dovresti richiamare la funzione cosi:
[php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10)[/php]
dai una lettura all'utilizzo delle funzioni che è meglio, altrimenti la prossima volta che devi fare una cosa del genere sei sempre nei problemi
-
@Thedarkita said:
Dovresti semplicemente sapere come come si utilizza una funzione, dovresti studiarti prima un pò di teoria, perchè se parti da 0 buttandoti sul codice credo che avrai molte più difficoltà.
in ogni caso dovresti richiamare la funzione cosi:
[php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10)[/php]
dai una lettura all'utilizzo delle funzioni che è meglio, altrimenti la prossima volta che devi fare una cosa del genere sei sempre nei problemi
Grazie Thedarkita del consiglio..ho appena letto la guida di giorgio tave sulle funzioni e già ho le idee molto piu' chiare....procedo nella realizzazione
-
@Thedarkita said:
Dovresti semplicemente sapere come come si utilizza una funzione, dovresti studiarti prima un pò di teoria, perchè se parti da 0 buttandoti sul codice credo che avrai molte più difficoltà.
in ogni caso dovresti richiamare la funzione cosi:
[php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10)[/php]
dai una lettura all'utilizzo delle funzioni che è meglio, altrimenti la prossima volta che devi fare una cosa del genere sei sempre nei problemi
Ho le idee n po piu chiare sulle funzioni...ma non su quello che fa questo scritp non riesco a capire come inserirlo nella mia pagina..
poi questa stringa
[php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10)[/php]resize sarebbe il nome della funzione ok...ma i valori nella parentesi?
non ho capito...ho le idee confusissime..:xle anteprime delle immagini in 100 px vorrei che fossero trasferite in un altra cartella..praticamente ad ogni invio di foto da parte di un utente lo script inserisce il file nella cartella originale e poi dovrebbe crearne un anteprima in un altra cartella:xin questo script non vedo nessun riferimento a cartelle o percorsi..da come ho letto questo crea un immagina da se..none che piglia un immagine da un percorso specificato:(
-
I valori nelle parentesi sono i valori che passi alla funzione. Sono le basi della funzione, guarda se non le impari non concludi niente perchè più semplice di cosi non saprei come spiegartelo. Poi nella guida cosa sono dovresti averlo letto...
[php]
resize($source_file, $output_file, $size, $quality)
[/php]
in pratica devi assegnare i valori alle variabili come ho fatto io...
-
@Thedarkita said:
I valori nelle parentesi sono i valori che passi alla funzione. Sono le basi della funzione, guarda se non le impari non concludi niente perchè più semplice di cosi non saprei come spiegartelo. Poi nella guida cosa sono dovresti averlo letto...
[php]
resize($source_file, $output_file, $size, $quality)
[/php]
in pratica devi assegnare i valori alle variabili come ho fatto io...ti capisco...purtroppo sono ancora troppo poco sapiente del php :xforse sto cercando il passo piu' lungo della gamba..ma cmq nn mi arrendo...
ritorniamo alin quelle 4 variabili all interno di resize devo dargli un valore...cioè le devo dichiarare sennò cosi' come stanno scritte sono nulle credo...mi spiego meglio
$source_file= qui ovrei inserire il percorso del file originale da cercare
$output_file= qqui invece dovrei inserire il percorso del file di destinazione
$size=qui la grandsezza
$quality=qui la qualità
giusto?e poi alla fine della funzione
richiamare il tutto cosi'
[php]
resize($source_file, $output_file, $size, $quality)
[/php]
ho detto una ?lo scritp completo sarebbe cosi?
[PHP]//Le funzioni che utilizzeremo sono:
<?
$source_file= qui ovrei inserire il percorso del file originale da cercare
$output_file= qqui invece dovrei inserire il percorso del file di destinazione
$size=qui la grandsezza
$quality=qui la qualità
function resize($source_file, $output_file, $size, $quality)
{
//jpeg resizer
$success = false;
list($width, $height) = getimagesize($source_file);$new_width = intval(($width * $size) / max($width, $height));
$new_height = intval(($height * $size) / max($width, $height));if ( $image_in = imagecreatefromjpeg($source_file) )
{
if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
{
imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ( imagejpeg($image_out, $output_file, $quality) )
{
$success = true;
}
imagedestroy($image_out);
}
imagedestroy($image_in);
}
return $success;
} ?>
[/PHP]
-
Si una volta fatto dovrebbe crearti la miniatura, il percorso di destinazione deve avere i permessi imposti a 777 altrimenti nn succede nulla
-
@Thedarkita said:
Si una volta fatto dovrebbe crearti la miniatura, il percorso di destinazione deve avere i permessi imposti a 777 altrimenti nn succede nulla
non mi genera nessuna anteprima:(
questo e il ocdice competo dello script
[PHP]
<?
$source_file='/membri/italiawebchat/foto/';
$output_file='/membri/italiawebchat/miniature/';
$size='100';
$quality='10';function resize($source_file, $output_file, $size, $quality)
{
//jpeg resizer
$success = false;
list($width, $height) = getimagesize($source_file);$new_width = intval(($width * $size) / max($width, $height));
$new_height = intval(($height * $size) / max($width, $height));if ( $image_in = imagecreatefromjpeg($source_file) )
{
if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
{
imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ( imagejpeg($image_out, $output_file, $quality) )
{
$success = true;
}
imagedestroy($image_out);
}
imagedestroy($image_in);
}
return $success;
}$a = resize('img.jpg', 'img-resize.jpg', 100, 10)
?>
[/PHP]
-
l'anteprima generata è un file... a schermo non vedi niente
i permessi sono impostati a 777 per la direcotry dove generi i file?
-
@Thedarkita said:
l'anteprima generata è un file... a schermo non vedi niente
i permessi sono impostati a 777 per la direcotry dove generi i file?
si..ho impostato i permessi della cartella foto e miniature entrambi a 777...
però nella cartella miniature non compare nessuna immagine ridimensionata...
-
Ho provato in locale, e funziona posta il coice che hai messo completo
-
@Thedarkita said:
Ho provato in locale, e funziona posta il coice che hai messo completo
ok..qesto e il codice completo dello script
[PHP]
<?
$source_file='/membri/italiawebchat/foto/';
$output_file='/membri/italiawebchat/miniature/';
$size='100';
$quality='10';function resize($source_file, $output_file, $size, $quality)
{
//jpeg resizer
$success = false;
list($width, $height) = getimagesize($source_file);$new_width = intval(($width * $size) / max($width, $height));
$new_height = intval(($height * $size) / max($width, $height));if ( $image_in = imagecreatefromjpeg($source_file) )
{
if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
{
imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ( imagejpeg($image_out, $output_file, $quality) )
{
$success = true;
}
imagedestroy($image_out);
}
imagedestroy($image_in);
}
return $success;
}
//funzione che richiama il tutto
$a = resize('img.jpg', 'img-resize.jpg', 100, 10)?>
[/PHP]
ho creato questa pagina e l ho insrrita nel ser web,l ho richiamata attravers il browser ma nulla....
-
Dovrebbe darti un errore di sintassi...
[php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10);[/php]
manca il punto e virgola, img.jpg deve essere il nome dell'immagine che vuoi ridimensionare controlla esista sul server
-
@Thedarkita said:
Dovrebbe darti un errore di sintassi...
[php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10);[/php]
manca il punto e virgola, img.jpg deve essere il nome dell'immagine che vuoi ridimensionare controlla esista sul serverah ecco..allora manca un passaggio..cioè questo script nn e completo..praticamente lo script dovrebbe ridimensionares enza che io inserisca il nome dell immagine...praticamente dovrebbe funzionare cosi'..
tutte le immagini jpeg e gif presenti nella cartella originale foto..di queste ne dovrebbe essere fatta una copia thumbnails nella cartella miniature...cio' però senza che io inserisca il nome dell immagine ....risulta possibile la cosa?(ora ridimensiona..era un problema di percorso della foto)
[PHP]$a = resize('foto/maglia.jpg', 'miniature/img-resize.jpg', 100, 10) ;[/PHP]
-
Ho modificato la funzione per fargli riconoscere gif jpg e png
adesso genera le anteprime di tutti i file in una cartella.[php]<?
function resize($source_file, $output_file, $size, $quality)
{
//jpeg resizer
$success = false;
list($width, $height) = getimagesize($source_file);$new_width = intval(($width * $size) / max($width, $height));
$new_height = intval(($height * $size) / max($width, $height));// Formato immagine
$l = strlen($source_file);
if($source_file[$l-1] == 'f' && $source_file[$l-2] == 'i' && $source_file[$l-3] == 'g')
$image_in = imagecreatefromgif($source_file);
elseif($source_file[$l-1] == 'g' && $source_file[$l-2] == 'n' && $source_file[$l-3] == 'p')
$image_in = imagecreatefrompng($source_file);
else
$image_in = imagecreatefromjpeg($source_file);if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
{
imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ( imagejpeg($image_out, $output_file, $quality) )
{
$success = true;
}
imagedestroy($image_out);
}
imagedestroy($image_in);return $success;
}// directory immagini
$img_dir = 'image/';
$img_anteprime = 'anteprime/';// apro la directory
$handle = opendir($img_dir);// Creo un ciclo ed utilizzo readdir per esplorare il contenuto della directory
while (false !== ($files = readdir($handle)))
{
// Genero le anteprime
if ($files != "." && $files != "..")
{
$a = resize($img_dir.$files, $img_anteprime.$files, 100, 10) ;
}}
?> [/php]NB se all'interno della cartella ci sono file php html o altre estenzioni lo script cercherà di creare un anteprima ugualmente...
-
giu' il cappello...nn ho finito di dire ciò che volevo fare...che già hai sviluppato un codice perfetto..grande..complimenti:)
cmq..avevo risolto il problema di prima facendo questa modifica
[PHP]
$a = resize('foto/maglia.jpg', 'miniature/img-resize.jpg', 100, 10) ;
[/PHP]
aggiungendo i percorsi:)e funzionava...ora mi leggo ancora una volta il codice che hai modificato te e cerco di capire come hai fatto...:)le cose e importante capirle:)
praticamenet in questa parte qui'
[PHP]
// Formato immagine
$l = strlen($source_file);
if($source_file[$l-1] == 'f' && $source_file[$l-2] == 'i' && $source_file[$l-3] == 'g')
$image_in = imagecreatefromgif($source_file);
elseif($source_file[$l-1] == 'g' && $source_file[$l-2] == 'n' && $source_file[$l-3] == 'p')
$image_in = imagecreatefrompng($source_file);
else
$image_in = imagecreatefromjpeg($source_file);if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
{
imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ( imagejpeg($image_out, $output_file, $quality) )
{
$success = true;
}
imagedestroy($image_out);
}
imagedestroy($image_in);return $success;
} [/PHP]
con strlen e stato fatto un controllo per ottenere le lunghezze delle stringhe contenute
nella variabile$source_file ,
if($source_file[$l-1] == f questa vuol dire... se nella variabile $source_file l utima lettera e uguale a f...:) qui nn ho capito [$l-1] se si aggiungeva solo [-1] non andava?
-
ok...scusami avevo detto una c.....ci ho ragionato un po su e ho capito che solo con il -1 non poteva mai andare
Cmq...
t in questa parte qui'
[PHP]
// Formato immagine
$l = strlen($source_file);
if($source_file[$l-1] == 'f' && $source_file[$l-2] == 'i' && $source_file[$l-3] == 'g')
$image_in = imagecreatefromgif($source_file);
elseif($source_file[$l-1] == 'g' && $source_file[$l-2] == 'n' && $source_file[$l-3] == 'p')
$image_in = imagecreatefrompng($source_file);
else
$image_in = imagecreatefromjpeg($source_file);if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
{
imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ( imagejpeg($image_out, $output_file, $quality) )
{
$success = true;
}
imagedestroy($image_out);
}
imagedestroy($image_in);return $success;
} [/PHP]
con strlen e stato fatto un controllo per ottenere le lunghezze delle stringhe contenute
nella variabile$source_file ,
if($source_file[$l-1] == f qui si parte con un if (se) poi si aggiunge la variabile principale ($source_file)contenente l acartella delle immagini in formato originale,a cui poi vengono aggiunti ulteriori parametri [$l-1]==f,praticamente qui' viene conteggiata la stringa partendo dall ultima lettera,se l ultima lettera e uguale a f,qui invece [$l-2]==i se la penultima lettera e uguale a i,qua [$l-3]==g se la terzultima lettera e ugualea g,
$image_in = imagecreatefromgif($source_file); crea un immagine in gif.
ho detto tutto giusto?
(mi sto leggendo su di un sito tutte le funzioni dalla A alla Z in ordine alfabetico);)
-
Gli if controllano l'estenzione del file se gif,jpg o png perchè ognuna delle 3 estenzione ha una funzione apposita
-
@Thedarkita said:
Gli if controllano l'estenzione del file se gif,jpg o png perchè ognuna delle 3 estenzione ha una funzione apposita
Questo controllo...viene fatto come ho descritto io sopra?Cioè.. -1 ultima lettera = a f penultima lettera uguale a i ect...?