文档章节

php压缩图片类,用gd库函数,吸取网上前辈精华加自己修改

 就叫昵称
发布于 2015/12/30 15:02
字数 562
阅读 81
收藏 0

上传图片时候后台等比例压缩,可以节省带宽,适用于上传头像或者某些可以压缩的图片,相册的话不建议使用

项目中用到了一个图片压缩,本来打算用imagemagick,但是考虑到需要在服务器端安装太多插件,为了一个程序太麻烦了,感谢网上前辈的恩惠,搜到了一段直接拿来用,出处不详,贴出来大家共勉

function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
 {
  $pic_width = imagesx($im);
  $pic_height = imagesy($im);
 
  if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))
  {
   if($maxwidth && $pic_width>$maxwidth)
   {
    $widthratio = $maxwidth/$pic_width;
    $resizewidth_tag = true;
   }
 
   if($maxheight && $pic_height>$maxheight)
   {
    $heightratio = $maxheight/$pic_height;
    $resizeheight_tag = true;
   }
 
   if($resizewidth_tag && $resizeheight_tag)
   {
    if($widthratio<$heightratio)
     $ratio = $widthratio;
    else
     $ratio = $heightratio;
   }
 
   if($resizewidth_tag && !$resizeheight_tag)
    $ratio = $widthratio;
   if($resizeheight_tag && !$resizewidth_tag)
    $ratio = $heightratio;
 
   $newwidth = $pic_width * $ratio;
   $newheight = $pic_height * $ratio;
 
   if(function_exists("imagecopyresampled"))
   {
    $newim = imagecreatetruecolor($newwidth,$newheight);//PHP系统函数
      imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//PHP系统函数
   }
   else
   {
    $newim = imagecreate($newwidth,$newheight);
      imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
   }
 
   $name = $name.$filetype;
   imagejpeg($newim,$name);
   imagedestroy($newim);
  }
  else
  {
   $name = $name.$filetype;
   imagejpeg($im,$name);
  }
 }

 

 

使用方法


        $pathimg="图片地址路径加完整扩展名";
        $patharr=pathinfo($pathimg); //判断图片类型,我这里只需要四种,如果需要的朋友们可以使用其他,自己添加进去即可
        switch ($patharr['extension']) {
          case 'jpg':
                $im=imagecreatefromjpeg($pathimg);
                break;
          case 'jpeg':
                $im=imagecreatefromjpeg($pathimg);
                break;
          case 'gif':
                $im=imagecreatefromgif($pathimg);
                break;
          case 'png':
                $im=imagecreatefrompng($pathimg);
                break;
        }
       
        $maxwidth="600";//设置图片的最大宽度
        $maxheight="600";//设置图片的最大高度
        $name=$pathimg;//图片的名称,随便取吧
        $filetype="";//图片类型 如果想要限制图片类型为特定格式,那$name用一个basename去掉扩展名,这里填写后缀即可,我这是在源文件地址替换,如果想要压缩后换文件夹,也可以再$name里直接把新的路径加上
        resizeImage($im,$maxwidth,$maxheight,$name,$filetype);//传参

 

我是写到一个类里,为了方便大家阅读,拿出来了,如果自己项目里用到,可以也封装起来,使用更方便,或者把扩展名判断添加进类里,大家可以自己扩展,我比较懒,实现功能就行,懒得在深入研究。希望大家工作顺心。

 

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 5
码字总数 1487
作品 0
青岛
PHP图片缩放函数:实现等比例不失真缩放

function resizeImage($im,$maxwidth,$maxheight,$name,$filetype){ } 参数说明: $im 图片对象,应用函数之前,你需要用imagecreatefromjpeg()读取图片对象,如果PHP环境支持PNG,GIF,也可...

微wx笑
2015/01/30
0
0
utf-8格式下 imagettftext 中文乱码

今天做个长微博工具 发现用 imagettftext 把文字写到图片上 中文乱码。 在网上找了好多信息,排除非gbk编码问题 我的所有文件都是utf-8的 当然也试了GBK的也乱码; 有人说 $str=mbconverten...

洞悉
2013/07/02
1K
2
php参数详解

[root@lnmp01 tools]# tar xf php-5.3.27.tar.gz解压压缩包 [root@lnmp01 tools]# cd php-5.3.27 进入php安装目录 ./configure 编译参数 –prefix=/application/php5.3.27 指定php的安装路径......

xiaofeng886
2017/03/24
0
0
ecshop网上商城搭建以及安装和页面问题的解决

要安装ecshop网上商城需要有apache网页服务器和php语言编译环境与mysql数据库。 原因:ecshop存在大量的php页面,php语言编译环境需要有相关的网页服务器进行解析如apache。 如果没有apache和...

hillsowl
2016/06/03
109
0
linux LNMP环境搭建

系统版本:CentOS 6.5 软件版本:libmcrypt-2.5.8 mysql-5.6.26 nginx-1.8.0 pcre-8.37 php-5.6.13 LNMP平台组成:Linux、Nginx、MySQl、PHP Nginx是一款高性能、轻量级的Web服务软件,具有稳...

睿睿学IT
2016/05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 小心着凉 @红薯

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:5.33起,其声呜呜然,如怨如慕,如泣如诉。余音袅袅,不绝如缕。分享Arch Enemy的单曲《Bridge Of Destiny (2009)》 《Bridge Of...

小小编辑
今天
190
4
what f,,

anlve
今天
9
0
初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
15
0
现场看路演了!

HiBlock
昨天
23
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部