Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144655
  • 博文数量: 21
  • 博客积分: 709
  • 博客等级: 上士
  • 技术积分: 255
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-19 22:23
个人简介

凤飞飞

文章分类

全部博文(21)

文章存档

2012年(3)

2011年(17)

2005年(1)

我的朋友

分类: 系统运维

2011-07-01 16:25:11




  1. <?php

  2. function resize($src,$destSrc, $w,$h)
  3.     {
  4.      $temp=pathinfo($src);
  5.         $name=$temp["basename"];
  6.         $dir=$temp["dirname"];
  7.         $savepath = empty($destSrc) ? "{$dir}/{$name}.thumb.jpg" : $destSrc;
  8.         
  9.         
  10.         $image = new Imagick();
  11.         $image->newImage($w, $h, new ImagickPixel('white'));
  12.         $image->setImageFormat('png');
  13.         
  14.         $imagick = new Imagick();
  15.         $imagick->readImage($src);
  16.         $width = $imagick->getImageWidth();
  17.         $height = $imagick->getImageHeight();

  18.         if ($width > $w || $height > $h) {
  19.             $imagick->resizeImage($w, $h, Imagick::FILTER_CATROM, 1, true);
  20.         }
  21.         
  22.         $imagick->setImageFormat('JPEG');
  23.         $imagick->setImageCompression(Imagick::COMPRESSION_JPEG);
  24.         $a = $imagick->getImageCompressionQuality() * 0.75;
  25.         if ($a == 0) {
  26.             $a = 75;
  27.         }
  28.         $imagick->setImageCompressionQuality($a);
  29.         $imagick->stripImage();
  30.         
  31.         $per1 = round($width/$height,2);//计算原图长宽比
  32.         $per2 = round($w/$h,2);//计算缩略图长宽比
  33.         
  34.         if($per1 == $per2){
  35.             $imagick->writeImage($savepath);
  36.         }else{
  37.             if($per1 > $per2){
  38.                 $x=0;
  39.                 $y=($h - $imagick->getImageHeight())/2;//垂直居中
  40.             }elseif($per1 < $per2){        
  41.                 $x=($w - $imagick->getImageWidth())/2;//水平居中
  42.                 $y=0;
  43.             }else{
  44.              $x = $y = 0;
  45.             }
  46.             $image->compositeImage($imagick, $imagick->getImageCompose(), $x, $y);
  47.             $image->writeImage($savepath);
  48.         }
  49.         
  50.         return $savepath;
  51.     }
  52. ?>

阅读(2239) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~