-
resize immagini e taglio
ciao, usando gd2 riesco perfettamente a fare il resize delle immagini, cioè mi creo i thumb...
sapete se è possibile ritagliare il centro dell'immagine e fare il resize su quello?
cioè se ho un'immagine che è 500x500 px, posso ritagliare un quadrato al centro dell'immagine grande, ad esempio, 200x200px e fare il resize su questo?
-
Attraverso le GD puoi fare tutti i ritagli e resize che vuoi, ma non ho capito bene quello che chiedi.
Dici che vuoi fare un resize su un ritaglio... non ho capito cosa vuol dire!
Vuoi ridimensionare solo una parte dell'immagine?
Vuoi che la thumb sia solo una parte dell'immagine anzichè tutta? (quindi niente resize, ma solo ritaglio dell'originale)
Ciaooooo!!!!!!
-
mi spiego meglio:
io ho un'immagine 500x500 di un telefono, solo che il telefono occupa solo la parte centrale dell'immagine e ai lati ha circa 100 px bianchi.
per fare un thumb decente, vorrei prendere solo un quadrato di 200 px al centro dell'immagine e resizzare questo...quindi dovrei prima creare il ritaglio, salvarlo sul server poi resizzarlo..
il resize non è un problema, ma non sò come fare il ritaglio :confused:
-
se ho capito bene frs qst codice può fare al caso tuo:
Codice PHP:
<?
$maxx = 200;
$maxy = 200;
$source_image_URL = 'a.jpg';
list($width, $height, $type) = getimagesize($source_image_URL);
switch($type){
case 1:
$source_image = imagecreatefromgif($source_image_URL);
break;
case 2:
$source_image = imagecreatefromjpeg($source_image_URL);
break;
case 3:
$source_image = imagecreatefrompng($source_image_URL);
break;
}
$percent1 = $width / $maxx;
$percent2 = $height / $maxy;
$percent = max($percent1,$percent2);
$new_eight = round($height /$percent);
$new_width = round($width /$percent);
$dest_image = imagecreatetruecolor($new_width, $new_eight);
imagecopyresampled ($dest_image, $source_image, 0, 0, 100, 100, $new_width, $new_eight, $maxx, $maxy);
header("Content-type: image/jpeg");
imagejpeg($dest_image);
imagedestroy($dest_image);
imagedestroy($source_image);
?>
-
bhè io per fare il resize uso questa funzione:
Codice PHP:
function resize($nomeimage, $source_path, $destination_path, $par, $quanto){
list($width, $height, $type, $attr) = getimagesize($source_path.$nomeimage);
if($par=="w"){
$conv=$height/$width;
$new_width=$quanto;
$new_height=$conv*$new_width;
$new_height=number_format($new_height, 0);
}else if($par=="h"){
$conv=$width/$height;
$new_height=$quanto;
$new_width=$conv*$new_height;
$new_width=number_format($new_width, 0);
}
$compression=100;
$destimg=imagecreatetruecolor($new_width,$new_height) or die("Problemi nelle creazioni dell'immagine");
$srcimg=ImageCreateFromJPEG($source_path.$nomeimage) or die("Problemi nell'aprire l'immagine");
ImageCopyResized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or die("Problemi nel ridimensionamento");
ImageJPEG($destimg,$destination_path.$nomeimage,$compression) or die("Problemi nel salvataggio");
}
premesso che che le mie immagini saranno sempre jpg.
così faccio il resize, ma se ho capito bene mi conviene prima ritagliare poi resizzare il ritaglio, giusto?
e...quindi? la funzione per ritagliare qual'è? e come gli passo i valori?
-
la funzione x ritaglaire è la stessa di qll ke usi x fare il resize, sl ke i parametri dovranno essere leggermente diversi...
vedi quei 4 zeri? gli ultimi due servono ad indicare il punto da cui dovrai inziare a ritagliare infatti io li ho messi a 100...poi gli ultimi 2 parametri indicano il punto fino a cui devi leggere l'immagine, dato ke le dimesioni dovranno essere 200 io ho messo 200...spero di essere stato kiaro...cmq qst è la tua funzione riadattata:
Codice PHP:
function resize($nomeimage, $source_path, $destination_path, $par, $quanto){
list($width, $height, $type, $attr) = getimagesize($source_path.$nomeimage);
if($par=="w"){
$conv=$height/$width;
$new_width=$quanto;
$new_height=$conv*$new_width;
$new_height=number_format($new_height, 0);
}else if($par=="h"){
$conv=$width/$height;
$new_height=$quanto;
$new_width=$conv*$new_height;
$new_width=number_format($new_width, 0);
}
$compression=100;
$destimg=imagecreatetruecolor($new_width,$new_heig ht) or die("Problemi nelle creazioni dell'immagine");
$srcimg=ImageCreateFromJPEG($source_path.$nomeimag e) or die("Problemi nell'aprire l'immagine");
ImageCopyResized($destimg,$srcimg,0,0,100,100,$new_wid th,$new_height,$new_width,$new_height) or die("Problemi nel ridimensionamento");
ImageJPEG($destimg,$destination_path.$nomeimage,$c ompression) or die("Problemi nel salvataggio");
}
nn l'ho provato...ma dovrebbe funzionare...
-
grazie mille ora funziona tutto alla perfezione!
ho aggiunto 2 righe per calcolare di volta in volta le dimensioni dell'immagine e stabilirne il centro, ora và che è una meraviglia!
thx!