imagejpeg函数压缩图片

/*** desription 压缩图片* @param string $imgsrc 图片路径* @param string $imgdst 压缩后保存路径,从项目根目录开始的路径(为空则输出图片)*/
function compressedImage($imgsrc, $imgdst)
{list($width, $height, $type) = getimagesize($imgsrc);$new_width = $width > 800 ? 800 : $width; //图片宽度的限制$new_height = $height > 800 ? ceil($height * 800 / $width) : $height; //自适应匹配图片高度switch ($type) {case 1:#先判断是否为gif动画$fp = fopen($imgsrc, 'rb');$image_head = fread($fp, 1024);fclose($fp);$giftype =  preg_match("/" . chr(0x21) . chr(0xff) . chr(0x0b) . 'NETSCAPE2.0' . "/", $image_head) ? false : true;if ($giftype) {header('Content-Type:image/gif');$image_wp = imagecreatetruecolor($new_width, $new_height);$image = imagecreatefromgif($imgsrc);imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);//90代表的是质量、压缩图片容量大小imagejpeg($image_wp, $imgdst, 90);imagedestroy($image_wp);imagedestroy($image);}break;case 2:header('Content-Type:image/jpeg');$image_wp = imagecreatetruecolor($new_width, $new_height);$image = imagecreatefromjpeg($imgsrc);imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);//90代表的是质量、压缩图片容量大小imagejpeg($image_wp, $imgdst, 90);imagedestroy($image_wp);imagedestroy($image);break;case 3:header('Content-Type:image/png');$image_wp = imagecreatetruecolor($new_width, $new_height);$image = imagecreatefrompng($imgsrc);imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);//90代表的是质量、压缩图片容量大小imagejpeg($image_wp, $imgdst, 90);imagedestroy($image_wp);imagedestroy($image);break;}
}

imagejpeg函数

(PHP 4, PHP 5, PHP 7)

imagejpeg — 输出图象到浏览器或文件。

说明

bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )

imagejpeg()image 图像以 filename 为文件名创建一个 JPEG 图像。

参数

  • image

    由图象创建函数(例如 imagecreatetruecolor() )返回的图象资源。

  • filename

    文件保存的路径,如果未设置或为 NULL ,将会直接输出原始图象流。如果要省略这个参数而提供 quality 参数,使用NULL。

  • quality

    quality 为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大)。默认为 IJG 默认的质量值(大约 75)。

返回值

成功时返回 TRUE , 或者在失败时返回 FALSE

imagejpeg详细解释链接:imagejpeg - [ php中文手册 ] - 在线原生手册 - php中文网

PHP 实现图片压缩相关推荐

  1. Android性能优化之图片压缩优化

    1 分类 Android图片压缩结合多种压缩方式,常用的有尺寸压缩.质量压缩.采样率压缩以及通过JNI调用libjpeg库来进行压缩. 参考此方法:Android-BitherCompress 备注: ...

  2. JS—图片压缩上传(单张)

    *vue+webpack环境,这里的that指到vue实例 <input type="file" name="file" accept="ima ...

  3. 使用libjpeg进行图片压缩(哈夫曼算法,无损压缩)

    Huffman算法也是一种无损压缩算法,但与LZW压缩算法不同,Huffman需要得到每种字符出现概率的先验知识.通过计算字符序列中每种字符出现的频率,为每种字符进行唯一的编码设计,使得频率高的字符占 ...

  4. Android图片压缩(质量压缩和尺寸压缩)

    在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩):质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手 ...

  5. android apk瘦身之 图片压缩 tinypng

    Android 的图片压缩其实压缩比很小.tinypng 大概可以压缩20%左右,我们工程的所有图片,之前是860k,压缩之后620k,少了200k. 使用: 1.安装python 2.使用pip进行 ...

  6. (0031) iOS 开发之图片压缩

    1. Aspect单词的, 都会按照图片的宽高比来拉伸.这样会显示不全照片 2. Scale单词的,都会对图片进行拉伸(缩放); 3. 没有出现Scale单词的,都不会对图片进行拉伸; UIViewC ...

  7. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )

    文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...

  8. 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )

    文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...

  9. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )

    文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...

  10. 【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )

    文章目录 一. 图片质量压缩 二. 图片尺寸压缩 三. Android 10 文件访问 四. 完整源码示例 上一篇博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供 ...

最新文章

  1. HTMLDOM中三种元素节点、属性节点、文本节点的测试案例
  2. 谷歌大脑最新研究:用AutoML的方式自动学习Dropout模式,再也不用手动设计
  3. python编程从入门到精通pdf-跟老齐学Python:从入门到精通 完整版PDF[7MB]
  4. java web项目目录报错_netdevgirl.通过maven创建javaweb项目
  5. java生成验证码SWT_Java SWT Lable框中显示图片验证码
  6. 开源 数据查询 工具_6个用于数据新闻的开源工具
  7. Python项目实践:天天向上的力量
  8. android融云自定义消息界面大小,融云自定义消息通知栏显示
  9. 使用缓冲流有什么好处_使用档案密集柜有什么好处?不看一看会后悔
  10. Jmeter接口测试系列之测试用例变量参数化处理
  11. 【滤波器】基于matlab GUI高通+低通+带通+带阻FIR滤波器设计【含Matlab源码 100期】
  12. linux网卡取消混杂模式,Linux下网卡混杂模式设置和取消
  13. 机架服务器怎么安装系统,华三服务器安装系统步骤(图解华三服务器怎么安装)...
  14. 出价成本计算机软件,百度竞价推广中,关键词怎么出价可以降低成本?
  15. viso 画背景框_officevisio怎么设置背景图和图纸...
  16. win7禁用驱动签名验证_如何在64位Windows 8或10上禁用驱动程序签名验证(以便可以安装未签名的驱动程序)...
  17. ps把图抠到html里,ps抠图教程:手把手教你如何用ps抠头发丝
  18. Ubuntu重装NVIDIA显卡驱动
  19. andorid 问题集合
  20. 互联网金融和计算机哪个专业比较好,互联网金融专业就业方向及前景分析(解读)...

热门文章

  1. ExpandableListView实现商品列表折叠
  2. 维吉尼亚密码_附有链接爆破
  3. 掌控板教程 | 掌控板 V1.1 测试版语音识别初体验
  4. 为什么开源可以提高程序员的编程技能?
  5. 录音转文字app有哪些?看完这篇文章你就知道了
  6. 什么是运维?什么是游戏运维?
  7. Java中的取余运算规则
  8. 组装一台多媒体计算机必须,微机组装与维护维修平时作业.doc
  9. 使用Google Earth Engine (GEE)实现MODIS数据批量下载
  10. Android JNI开发读取asserts目录中文件的方法