文档章节

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

 就叫昵称
发布于 2015/12/30 15:02
字数 562
阅读 41
收藏 0
点赞 0
评论 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扩展:curl ... Failed

您的服务器没有安装这个PHP扩展:curl ... Failed 在安装cms时如果出现:您的服务器没有安装这个PHP扩展:curl ... Failed 解决办法如下: 1、在php.ini中找到有extension=phpcurl.dll, 去掉前...

技术小胖子 ⋅ 2017/11/01 ⋅ 0

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

ecshop网上商城搭建以及安装和页面问题的解决

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

hillsowl ⋅ 2016/06/03 ⋅ 0

PHP图片缩放函数:实现等比例不失真缩放

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

微wx笑 ⋅ 2015/01/30 ⋅ 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

PHP制作数字、字母型验证码及其工作原理剖析

准备: 使用PHP生成验证码图片,需要PHP的GD模块,GD扩展库用于处理图像。所以先去检查你的服务器使用的PHP版本是否开启GD模块,你可以使用PHP内置函数phpinfo()去检查,至于如何去做就不在这...

小飞侠_Kobe ⋅ 2016/09/29 ⋅ 0

utf-8格式下 imagettftext 中文乱码

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

洞悉 ⋅ 2013/07/02 ⋅ 2

使用PHP生成二维码的二种方法(带logo图像)

分享下如何使用PHP生成二维码,以及如何生成中间带LOGO图像的二维码 一、利用Google API生成二维码 Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: 二、使用P...

mysoftsky ⋅ 2014/07/14 ⋅ 0

Web设计与开发终极资源大全(上)

Web 技术突飞猛进,Web 设计与开发者们可以选择的工具越来越多,Web 开发者的技巧不再只限于 HTML 和 服务器端编程,还需要精通各种第三方资源,这些第三方资源有时候比你的项目更复杂,更专...

红薯 ⋅ 2010/03/18 ⋅ 3

PHP修改PNG图片DPI

最近使用PHP生成图片用于打印,但是浏览器默认输出为72DPI,打印要求为300DPI,如果直接打印,图片会比较模糊。 在网上找了一圈,大部分链接都指向ImageMagick,但是我的项目部署在新浪SAE,...

willxiao ⋅ 2014/03/18 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 10分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 13分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 23分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 55分钟前 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部