免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1322 | 回复: 0
打印 上一主题 下一主题

ImageMagick 实例 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:54 |只看该作者 |倒序浏览



  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. ?>

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP