imagemagic это самое то чтобы кусок аватарки вырезать. почему бы сразу не послать по почте своему другу-дизайнеру, он вырежет еще лучше.
ок. это я поиздевался для иллюстрации. исходная ава в твоей подписи.
вот ништяковая функция для масштабирования. может обрезать, может не обрезать:
function makeThumbnail($srcFile, $dstFile, $thumbWidth, $thumbHeight, $crop = FALSE)
{
$rgb = 0xFFFFFF;
$quality = 80;
$size = @getimagesize($srcFile);
$offsetX = $offsetY = 0;
if ($size === FALSE) return FALSE;
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
$icfunc = 'imagecreatefrom' . $format;
if (!function_exists($icfunc)) return FALSE;
$origImg = $icfunc($srcFile);
if (($size[0] <= $thumbWidth) && ($size[1] <= $thumbHeight)) {
// use original size
$width = $size[0];
$height = $size[1];
} else {
$width = $thumbWidth;
$height = $thumbHeight;
// calculate fit ratio
$ratioX = $size[0] / $thumbWidth;
$ratioY = $size[1] / $thumbHeight;
if ($ratioX < $ratioY) {
if ($crop) {
$offsetY = ($size[1] - $thumbHeight * $ratioX) / 2;
$size[1] = $thumbHeight * $ratioX;
} else {
$width = $size[0] / $ratioY;
$height = $thumbHeight;
}
} else {
if ($crop) {
$offsetX = ($size[0] - $thumbWidth * $ratioY) / 2;
$size[0] = $thumbWidth * $ratioY;
} else {
$width = $thumbWidth;
$height = $size[1] / $ratioX;
}
}
}
$thumImg = imagecreatetruecolor($width, $height);
imagefill($thumImg, 0, 0, $rgb);
imagecopyresampled($thumImg, $origImg, 0, 0, $offsetX, $offsetY, $width, $height, $size[0], $size[1]);
imagejpeg($thumImg, $dstFile, $quality);
imagedestroy($origImg);
imagedestroy($thumImg);
return TRUE;
}
ιιlllιlllι унц-унц