- 论坛徽章:
- 0
|
- <?php
-
-
function resize($src,$destSrc, $w,$h)
-
{
-
$temp=pathinfo($src);
-
$name=$temp["basename"];
-
$dir=$temp["dirname"];
-
$savepath = empty($destSrc) ? "{$dir}/{$name}.thumb.jpg" : $destSrc;
-
-
-
$image = new Imagick();
-
$image->newImage($w, $h, new ImagickPixel('white'));
-
$image->setImageFormat('png');
-
-
$imagick = new Imagick();
-
$imagick->readImage($src);
-
$width = $imagick->getImageWidth();
-
$height = $imagick->getImageHeight();
-
-
if ($width > $w || $height > $h) {
-
$imagick->resizeImage($w, $h, Imagick::FILTER_CATROM, 1, true);
-
}
-
-
$imagick->setImageFormat('JPEG');
-
$imagick->setImageCompression(Imagick::COMPRESSION_JPEG);
-
$a = $imagick->getImageCompressionQuality() * 0.75;
-
if ($a == 0) {
-
$a = 75;
-
}
-
$imagick->setImageCompressionQuality($a);
-
$imagick->stripImage();
-
-
$per1 = round($width/$height,2);//计算原图长宽比
-
$per2 = round($w/$h,2);//计算缩略图长宽比
-
-
if($per1 == $per2){
-
$imagick->writeImage($savepath);
-
}else{
-
if($per1 > $per2){
-
$x=0;
-
$y=($h - $imagick->getImageHeight())/2;//垂直居中
-
}elseif($per1 < $per2){
-
$x=($w - $imagick->getImageWidth())/2;//水平居中
-
$y=0;
-
}else{
-
$x = $y = 0;
-
}
-
$image->compositeImage($imagick, $imagick->getImageCompose(), $x, $y);
-
$image->writeImage($savepath);
-
}
-
-
return $savepath;
-
}
-
?>
|
|