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 if 想到的些问题
Mar 22 PHP
php正则表达式(regar expression)
Sep 10 PHP
mysql数据库差异比较的PHP代码
Feb 05 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
Java中final关键字详解
Aug 10 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
thinkphp多层MVC用法分析
Dec 30 PHP
浅谈PHP中的
Apr 23 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
Jun 11 PHP
PHP获取二叉树镜像的方法
Jan 17 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 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 面向对象之成员方法详解
2013/05/04 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
详解Node.js异步处理的各种写法
2019/06/09 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
Python查看多台服务器进程的脚本分享
2014/06/11 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
python中如何进行连乘计算
2020/05/28 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
劳资人员岗位职责
2013/12/19 职场文书
运动会广播稿300字
2014/01/10 职场文书
创建省级文明单位实施方案
2014/02/27 职场文书
2014学雷锋活动心得体会
2014/03/10 职场文书
法人授权委托书范本
2014/04/04 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
员工评语范文
2014/12/31 职场文书
质量保证书格式
2015/02/27 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
oracle索引总结
2021/09/25 Oracle
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
mysql数据库实现设置字段长度
2022/06/10 MySQL