浅谈关于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
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 PHP
php 设计模式之 单例模式
Dec 19 PHP
Zend的MVC机制使用分析(二)
May 02 PHP
thinkphp多层MVC用法分析
Dec 30 PHP
php语言的7种基本的排序方法
Dec 28 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
Laravel框架创建路由的方法详解
Sep 04 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 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图片验证码制作实现分享(全)
2012/05/10 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
C语言笔试题
2014/09/04 面试题
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
实习评语
2013/12/16 职场文书
区域销售经理职责
2013/12/22 职场文书
电厂厂长岗位职责
2014/01/02 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
求职自荐信怎么写
2014/03/06 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
python 如何执行控制台命令与操作剪切板
2021/05/20 Python