浅谈关于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 调试利器debug_print_backtrace()
Jul 23 PHP
php中防止SQL注入的最佳解决方法
Apr 25 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
PHP页面输出搜索后跳转下一页的处理方法
Sep 30 PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
php中时间函数date及常用的时间计算
May 12 PHP
PHP实现的分页类定义与用法示例
Jul 05 PHP
php进程daemon化的正确实现方法
Sep 06 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网站在线人数统计
2008/04/09 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
Vue实现图书管理案例
2021/01/20 Vue.js
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
使用Kivy将python程序打包为apk文件
2017/07/29 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
师范应届生求职信
2013/11/15 职场文书
高三自我评价
2014/02/01 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS