浅谈关于PHP解决图片无损压缩的问题


Posted in PHP onSeptember 01, 2017

本文介绍了关于PHP解决图片无损压缩的问题,分享给大家,具体如下:

代码如下:

header("Content-type: image/jpeg"); 
$file = "111.jpg"; 
$percent = 1.5; //图片压缩比 
list($width, $height) = getimagesize($file); //获取原图尺寸 
//缩放尺寸 
$newwidth = $width * $percent; 
$newheight = $height * $percent; 
$src_im = imagecreatefromjpeg($file); 
$dst_im = imagecreatetruecolor($newwidth, $newheight); 
imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
imagejpeg($dst_im); //输出压缩后的图片 
imagedestroy($dst_im); 
imagedestroy($src_im);

我发现用php的imagecopyresized把大图片缩成小图片时,图片会变得很模糊,这时候要提升清晰度不如用 imagecopyresampled 代替 imagecopyresized也许会更好。

注:压缩有损失是必然的,看的清楚与否实际上就是是否接受这个范围的问题.比如你图像上原图有些点是2px,但是你压缩5倍,那么这些点就会消失。

<?php  
/** 
* desription 压缩图片 
* @param sting $imgsrc 图片路径 
* @param string $imgdst 压缩后保存路径 
*/ 
function image_png_size_add($imgsrc,$imgdst){  
 list($width,$height,$type)=getimagesize($imgsrc);  
 $new_width = ($width>600?600:$width)*0.9;  
 $new_height =($height>600?600:$height)*0.9;  
 switch($type){  
  case 1:  
   $giftype=check_gifcartoon($imgsrc);  
   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);  
    imagejpeg($image_wp, $imgdst,75);  
    imagedestroy($image_wp);  
   }  
   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);  
   imagejpeg($image_wp, $imgdst,75);  
   imagedestroy($image_wp);  
   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);  
   imagejpeg($image_wp, $imgdst,75);  
   imagedestroy($image_wp);  
   break;  
 }  
}  
/** 
* desription 判断是否gif动画 
* @param sting $image_file图片路径 
* @return boolean t 是 f 否 
*/ 
function check_gifcartoon($image_file){  
 $fp = fopen($image_file,'rb');  
 $image_head = fread($fp,1024);  
 fclose($fp);  
 return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true;  
}  
?>

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

PHP 相关文章推荐
在线竞拍系统的PHP实现框架(一)
Oct 09 PHP
学习使用PHP数组
Oct 09 PHP
无数据库的详细域名查询程序PHP版(3)
Oct 09 PHP
用PHP伪造referer突破网盘禁止外连的代码
Jun 15 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
Jun 26 PHP
php数组中删除元素之重新索引的方法
Sep 16 PHP
jquery获取多个checkbox的值异步提交给php的方法
Jun 24 PHP
php链表用法实例分析
Jul 09 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 #PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
Sep 01 #PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 #PHP
php插件Xajax使用方法详解
Aug 31 #PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 #PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 #PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 #PHP
You might like
Content-type 的说明
2006/10/09 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
利用python求相邻数的方法示例
2017/08/18 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
Python configparser模块操作代码实例
2020/06/08 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
Java程序开发中如何应用线程
2016/03/03 面试题
测绘工程个人的自我评价
2013/11/10 职场文书
医院实习接收函
2014/01/12 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
个人贷款承诺书
2014/03/28 职场文书
大学生演讲稿
2014/04/25 职场文书
品质口号大全
2014/06/17 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
保研导师推荐信
2015/03/25 职场文书
交流会主持词
2015/07/02 职场文书