come faccio a ridimensionare le immagini per creare delle thumbs con le GD?
come faccio a ridimensionare le immagini per creare delle thumbs con le GD?
Ti basta usare la funzione imagecopyresampled. Trovi due esempi sulla documentazione ufficiale:
http://it2.php.net/manual/en/function.imagecopyresampled.php
Esiste anche la funzione imagecopyresized ma da i risultati sono di qualità inferiore pertanto ti sconsiglio di usarla.
:bye:
hm come installo gd in locale??? [ho winzozz] e con php 5 non c'èra[anche se dovrebbe essere compresa ]
devi andare nel php.ini e decommentare (togliere il punto e virgola iniziale) la riga ;extension=php_gd2.dll
Ovviamente riavvia Apache.
:bye:
ti passo una bella funzioncina, ma non dirlo in giro:
//-----------------------------------------------------------------
//funzione che salva la foto e ritorna il nome con cui l'ha salvata
function salvaFoto($foto,$foto_nome,$path,$max,$meth,$quality)
{
$image = $path . $foto_nome;
copy($foto, $image);
// controllo le dimensioni
$filesize = filesize($image);
$imagesize = @getimagesize($image);
//echo "<br>max:" . $imagesize[0];
//echo "----------------------------";
if ($imagesize == null){
$ERROR = "'$image' non è un immagine !";
@unlink($image);
}else{
if(max($imagesize[0],$imagesize[1]) > $max){
//echo "ciao";
resize_image($image, $image, $max, $meth, $quality);
}
}
return $image;
}
define("GIS_GIF", 1);
define("GIS_JPG", 2);
define("GIS_PNG", 3);
// Resize an image
function resize_image($src_file, $dest_file, $new_size, $method, $quality)
{
global $CONFIG, $ERROR;
$imginfo = @getimagesize($src_file);
if ($imginfo == null)
return false;
// GD can only handle JPG & PNG images
if ($imginfo[2] != GIS_JPG && $imginfo[2] != GIS_PNG && ($method == 'gd1' || $method == 'gd2'))
{
$ERROR = "Quando usi GD gli unici standard permessi sono JPEG e PNG.";
return false;
}
// height/width
$srcWidth = $imginfo[0];
$srcHeight = $imginfo[1];
$ratio = max($srcWidth, $srcHeight) / $new_size;
$ratio = max($ratio, 1.0);
$destWidth = (int)($srcWidth / $ratio);
$destHeight = (int)($srcHeight / $ratio);
// Method for thumbnails creation
switch ($method) {
case "im" :
// 'Escape shell arguments' is mandatory under Unix but confuses windows
if (preg_match("/\A[a-z]:/i",__FILE__)){
$src_file = '"'.$src_file.'"';
$im_dest_file = str_replace('%', '%%', ('"'.$dest_file.'"'));
} else {
$src_file = escapeshellarg($src_file);
$im_dest_file = str_replace('%', '%%', escapeshellarg($dest_file));
}
//exec ("convert -quality $quality -antialias -geometry {$destWidth}x{$destHeight} $src_file $im_dest_file");
exec ("convert -quality 40 -antialias -geometry {$destWidth}x{$destHeight} $src_file $im_dest_file");
break;
case "gd1" :
if ($imginfo[2] == GIS_JPG)
$src_img = @imagecreatefromjpeg($src_file);
else
$src_img = @imagecreatefrompng($src_file);
if (!$src_img){
$ERROR = "L'immagine non è valida !";
@unlink($src_file);
return false;
}
$dst_img = imagecreate($destWidth, $destHeight);
imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $destWidth, (int)$destHeight, $srcWidth, $srcHeight);
imagejpeg($dst_img, $dest_file, $quality);
imagedestroy($src_img);
imagedestroy($dst_img);
break;
case "gd2" :
if ($imginfo[2] == GIS_JPG)
$src_img = @imagecreatefromjpeg($src_file);
else
$src_img = @imagecreatefrompng($src_file);
if (!$src_img){
$ERROR = "L'immagine non è valida !!";
@unlink($src_file);
return false;
}
$dst_img = imagecreatetruecolor($destWidth, $destHeight);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $destWidth, (int)$destHeight, $srcWidth, $srcHeight);
imagejpeg($dst_img, $dest_file, $quality);
imagedestroy($src_img);
imagedestroy($dst_img);
break;
}
// We check that the image is valid
$imginfo = @getimagesize($dest_file);
if ($imginfo == null){
$ERROR = "Non è stato possibile ridimensionare l'immagine !";
@unlink($src_file);
return false;
} else {
return true;
}
}
:D