浅谈关于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中的cookie
Nov 26 PHP
jq的get传参数在utf-8中乱码问题的解决php版
Jul 23 PHP
PHP 数组基础知识小结
Aug 20 PHP
一个PHP并发访问实例代码
Sep 06 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
php模拟post提交数据的方法
Feb 12 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
微信支付PHP SDK ―― 公众号支付代码详解
Sep 13 PHP
AJAX的使用方法详解
Apr 29 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP实现文字写入图片功能
Feb 18 PHP
php变量与字符串的增删改查操作示例
May 07 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之第一天
2006/10/09 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
jQuery事件用法详解
2016/10/06 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
利用Psyco提升Python运行速度
2014/12/24 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
python与pycharm有何区别
2020/07/01 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
sort命令的作用和用法
2013/08/25 面试题
十八大感想感言
2014/02/10 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
博士生专家推荐信
2015/03/25 职场文书