PHP实现图片压缩


Posted in PHP onSeptember 09, 2020

本文实例为大家分享了PHP实现图片压缩的具体代码,供大家参考,具体内容如下

/**
 * 生成图片
 * @param string $im 源图片路径
 * @param string $dest 目标图片路径
 * @param int $maxwidth 生成图片宽
 * @param int $maxheight 生成图片高
 */
function resizeImage($im, $dest, $maxwidth, $maxheight) {
 $img = getimagesize($im);
 switch ($img[2]) {
 case 1:
  $im = @imagecreatefromgif($im);
  break;
 case 2:
  $im = @imagecreatefromjpeg($im);
  break;
 case 3:
  $im = @imagecreatefrompng($im);
  break;
 }
 
 $pic_width = imagesx($im);
 $pic_height = imagesy($im);
 $resizewidth_tag = false;
 $resizeheight_tag = false;
 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);
  imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
 } else {
  $newim = imagecreate($newwidth, $newheight);
  imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
 }
 
 imagejpeg($newim, $dest);
 imagedestroy($newim);
 } else {
 imagejpeg($im, $dest);
 }
}
 
/**
 * 图片压缩处理
 * @param string $sFile 源图片路径
 * @param int $iWidth 自定义图片宽度
 * @param int $iHeight 自定义图片高度
 * @return string 压缩后的图片路径
 */
function getThumb($sFile,$iWidth,$iHeight){
 //图片公共路径
 $public_path = '';
 //判断该图片是否存在
 if(!file_exists($public_path.$sFile)) return $sFile;
 //判断图片格式(图片文件后缀)
 $extend = explode("." , $sFile);
 $attach_fileext = strtolower($extend[count($extend) - 1]);
 if (!in_array($attach_fileext, array('jpg','png','jpeg'))){
 return '';
 }
 //压缩图片文件名称
 $sFileNameS = str_replace(".".$attach_fileext, "_".$iWidth.'_'.$iHeight.'.'.$attach_fileext, $sFile);
 //判断是否已压缩图片,若是则返回压缩图片路径
 if(file_exists($public_path.$sFileNameS)){
 return $sFileNameS;
 }
 
 //生成压缩图片,并存储到原图同路径下
 resizeImage($public_path.$sFile, $public_path.$sFileNameS, $iWidth, $iHeight);
 if(!file_exists($public_path.$sFileNameS)){
 return $sFile;
 }
 return $sFileNameS;
}

使用实例:

//原图 img/img.jpg
//生成压缩图 img/img_300_300.jpg
getThumb('img/img.jpg',300,300);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木,关注三水点靠木公众号的更多精彩内容。

PHP 相关文章推荐
php读取30天之内的根据算法排序的代码
Apr 06 PHP
php循环输出数据库内容的代码
May 24 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
php 操作符与控制结构
Mar 07 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 #PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 #PHP
PHP解析url并得到url参数方法总结
Oct 11 #PHP
详细对比php中类继承和接口继承
Oct 11 #PHP
PHP JWT初识及其简单示例
Oct 10 #PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 #PHP
php实现单笔转账到支付宝功能
Oct 09 #PHP
You might like
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
PHP反射学习入门示例
2019/06/14 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
javascript判断office版本示例
2014/04/11 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
python实现分页效果
2017/10/25 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
Python内置函数及功能简介汇总
2020/10/13 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
初中同学聚会邀请函
2014/02/03 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
党员剖析材料范文
2014/09/30 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
寒山寺导游词
2015/02/03 职场文书