Denne funktion resizer et image til en given bredde i pixels. Aspect
ratio er samme i den nye fil som i den gamle. Den oprindelige imagefil
bevares, men der laves en ny med den nye bredde. Returnerer navnet på
resultatet. Hvis det ikke lykkes returneres navnet på originalen.
function cr_image ($ext, $width, $fname, $newfname) {
// get original image
if ($ext == "jpg" || $ext == "jpeg") {
$org = @imagecreatefromjpeg ($fname);
}
else if ($ext == "png") {
$org = @imagecreatefrompng ($fname);
}
else if ($ext == "gif") {
$org = @imagecreatefromgif ($fname);
}
else {
return ($fname); // unsupportet extension
}
if (!$org) {
return ($fname); // something went wrong
}
// resize
$orgx = imagesx ($org);
$orgy = imagesy ($org);
$scale = $width / $orgx;
$newx = $width;
$newy = $orgy * $scale;
// print ($orgx."x".$orgy." => ".$newx."x".$newy."
// scale=".$scale."\n");
$new = imagecreate ($newx, $newy);
$r = imagecopyresized ($new, $org, 0, 0, 0, 0,
$newx, $newy, $orgx, $orgy);
imagedestroy ($org);
// store new image
if ($ext == "jpg" || $ext == "jpeg") {
imagejpeg ($new, $newfname);
}
else if ($ext == "png") {
imagepng ($new, $newfname);
}
else if ($ext == "gif") {
imagegif ($new, $newfname);
}
else {
return ($fname);
}
imagedestroy ($new);
return ($newfname);
}
--
Jan Fjeldmark mailto:janf@janf.dk
http://janf.dk/
Hvad du end tror du er, så er du altid meget mere.