Codice PHP:
function resize_then_crop( $filein,$fileout,$imagethumbsize_w,$imagethumbsize_h,$red,$green,$blue)
{
$percent = 0.5;
// Get new dimensions
list($width, $height) = getimagesize($filein);
$new_width = $width * $percent;
$new_height = $height * $percent;
if(preg_match("/.jpg/i", "$filein")){
$format = 'image/jpeg';
}
if (preg_match("/.gif/i", "$filein")){
$format = 'image/gif';
}
if(preg_match("/.png/i", "$filein")){
$format = 'image/png';
}
switch($format){
case 'image/jpeg':
$image = imagecreatefromjpeg($filein);
break;
case 'image/gif';
$image = imagecreatefromgif($filein);
break;
case 'image/png':
$image = imagecreatefrompng($filein);
break;
}
$width = $imagethumbsize_w ;
$height = $imagethumbsize_h ;
list($width_orig, $height_orig) = getimagesize($filein);
if ($width_orig < $height_orig) {
$height = ($imagethumbsize_w / $width_orig) * $height_orig;
} else {
$width = ($imagethumbsize_h / $height_orig) * $width_orig;
}
if ($width < $imagethumbsize_w){
//if the width is smaller than supplied thumbnail size
$width = $imagethumbsize_w;
$height = ($imagethumbsize_w/ $width_orig) * $height_orig;;
}
if ($height < $imagethumbsize_h){
$height = $imagethumbsize_h;
$width = ($imagethumbsize_h / $height_orig) * $width_orig;
}
$thumb = imagecreatetruecolor($width , $height);
$bgcolor = imagecolorallocate($thumb, $red, $green, $blue);
imagefilledrectangle($thumb, 0, 0, $width, $height, $bgcolor);
imagealphablending($thumb, true);
imagecopyresampled($thumb, $image, 0, 0, 0, 0,
$width, $height, $width_orig, $height_orig);
$thumb2 = imagecreatetruecolor($imagethumbsize_w , $imagethumbsize_h);
// true color for best quality
$bgcolor = imagecolorallocate($thumb2, $red, $green, $blue);
imagefilledrectangle($thumb2, 0, 0, $imagethumbsize_w , $imagethumbsize_h , $bgcolor);
imagealphablending($thumb2, true);
$w1 =($width/2) - ($imagethumbsize_w/2);
$h1 = ($height/2) - ($imagethumbsize_h/2);
imagecopyresampled($thumb2, $thumb, 0,0, $w1, $h1,
$imagethumbsize_w , $imagethumbsize_h ,$imagethumbsize_w, $imagethumbsize_h);
// Output
//header('Content-type: image/gif');
//imagegif($thumb); //output to browser first image when testing
switch($format){
case 'image/jpeg':
imagejpeg($thumb2, $fileout);
break;
case 'image/gif';
imagegif($thumb2, $fileout);
break;
case 'image/png':
imagepng($thumb2, $fileout);
break;
} //write to file
imagedestroy( $thumb2 ) ;
imagedestroy( $thumb ) ;
}
ora il problema è che con le immagini non superiori ai 1024x768 pixel funziona tranquillamente, ma con le immagini più grandi mi fa compare il messaggio di errore 500 "Internal Server Error" ho notato che commentando le funzioni