浅谈关于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 相关文章推荐
获得Google PR值的PHP代码
Jan 28 PHP
PHP SQLite类
May 07 PHP
php cookies中删除的一般赋值方法
May 07 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
php实现的CSS更新类实例
Sep 22 PHP
php递归遍历多维数组的方法
Apr 18 PHP
教大家制作简单的php日历
Nov 17 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
PHP身份证校验码计算方法
Aug 10 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 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
常见php数据文件缓存类汇总
2014/12/05 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
python  logging日志打印过程解析
2019/10/22 Python
python绘制雪景图
2019/12/16 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
Pandas的数据过滤实现
2021/01/15 Python
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
校园网站的创业计划书范文
2013/12/30 职场文书
七年级政治教学反思
2014/02/03 职场文书
迟到早退检讨书
2014/02/10 职场文书
爱心倡议书范文
2014/05/12 职场文书
化工专业求职信
2014/07/01 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
实操Python爬取觅知网素材图片示例
2021/11/27 Python
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis
用Python实现屏幕截图详解
2022/01/22 Python