浅谈关于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字符串截取中文截取2,单字节截取模式
Dec 10 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
Mar 13 PHP
PHP include_path设置技巧分享
Jul 03 PHP
PHP书写格式详解(必看)
May 23 PHP
PHP 自动加载的简单实现(推荐)
Aug 12 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
php自定义apk安装包实例
2014/10/20 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
解决laravel session失效的问题
2019/10/14 PHP
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
Python简单进程锁代码实例
2015/04/27 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
将python代码和注释分离的方法
2018/04/21 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
2016/12/20 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
农救科工作职责
2013/11/27 职场文书
初中物理教学反思
2014/01/14 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
2015年班组工作总结
2015/04/20 职场文书
2015年消防工作总结
2015/04/24 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python