浅谈关于PHP解决图片无损压缩的问题

发布时间 - 2026-01-11 03:04:07    点击率:

本文介绍了关于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  # 图片无损压缩  # png无损压缩  # PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】  # PHP图片裁剪函数(保持图像不变形)  # PHP图像识别技术原理与实现  # PHP中绘制图像的一些函数总结  # php图像处理函数大全(推荐收藏)  # php使用imagick模块实现图片缩放、裁剪、压缩示例  # 基于PHP实现等比压缩图片大小  # PHP添加图片水印、压缩、剪切的封装类  # php高清晰度无损图片压缩功能的实现代码  # PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】  # 就会  # 片时  # 得很  # 给大家  # 也许会  # 如你  # 大家多多  # 小图  # 如用  # 压缩比  # 判断是否  # 这时候  # 大图片  # 我发现  # 但是你  # 是必然  # dst_im  # imagejpeg  # imagecopyresized  # imagecreatetruecolor 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: 详解Android——蓝牙技术 带你实现终端间数据传输  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Laravel如何与Pusher实现实时通信?(WebSocket示例)  如何彻底删除建站之星生成的Banner?  如何快速查询网址的建站时间与历史轨迹?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  如何在香港免费服务器上快速搭建网站?  Windows Hello人脸识别突然无法使用  如何快速使用云服务器搭建个人网站?  如何快速查询域名建站关键信息?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel怎么在Blade中安全地输出原始HTML内容  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Laravel如何为API生成Swagger或OpenAPI文档  高防服务器租用如何选择配置与防御等级?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  香港服务器如何优化才能显著提升网站加载速度?  python中快速进行多个字符替换的方法小结  如何快速辨别茅台真假?关键步骤解析  Laravel如何配置任务调度?(Cron Job示例)  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  创业网站制作流程,创业网站可靠吗?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  免费视频制作网站,更新又快又好的免费电影网站?  使用Dockerfile构建java web环境  Laravel如何使用Vite进行前端资源打包?(配置示例)  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  高端企业智能建站程序:SEO优化与响应式模板定制开发  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Laravel集合Collection怎么用_Laravel集合常用函数详解  独立制作一个网站多少钱,建立网站需要花多少钱?  如何利用DOS批处理实现定时关机操作详解  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  如何在IIS服务器上快速部署高效网站?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  iOS正则表达式验证手机号、邮箱、身份证号等  如何基于云服务器快速搭建网站及云盘系统?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  高端建站三要素:定制模板、企业官网与响应式设计优化