PHP实现图片批量压缩
set_time_limit(0);
global $source_dir;
global $target_dir;
$source_dir = "D:/images/";//目标路径
$target_dir = 'D:/finish/';//最终路径 /*开始扫描文件夹*/
scan_dir($source_dir);
//exit('finish'); function log_msg($msg){
echo "$msg\r\n";
} /**
* 转移文件
* @param $path_file
* @return array
*/
function move_file($path_file){
$path_file = rtrim($path_file,'/');
if (!is_file($path_file)) return array('msg'=>'图片不存在','status'=>false); global $source_dir;
global $target_dir; $file_name = substr($path_file,strrpos($path_file,'/')+1);
$dir = substr($path_file,0,strrpos($path_file,'/')+1);
$imginfo= getimagesize($path_file);
$ext = strtolower(substr(end($imginfo),strrpos(end($imginfo),'/')+1));
$new_dir = str_replace($source_dir,$target_dir,$dir);
if (!is_dir($new_dir)){
$rs = mkdir($new_dir,0777,true);
if (!$rs) return array('msg'=>'创建文件夹失败','status'=>false);
}
/*新文件名*/
$new_file_name = substr($file_name,0,strrpos($file_name,'.')).".jpg";
$path_new_file = "{$new_dir}{$new_file_name}";
switch ($ext){
case "png":
$file = imagecreatefrompng($path_file);
imagejpeg($file,$path_new_file);
break;
case "gif":
$file = imagecreatefromgif($path_file);
imagejpeg($file,$path_new_file);
break;
case "jpg":
case "jpeg":
default:
$file = imagecreatefromjpeg($path_file);
imagejpeg($file,$path_new_file);
break;
}
return array('msg'=>'success','status'=>true);
} /**
* 扫描文件夹
* @param $path_dir
*/
function scan_dir($path_dir){
if (!is_dir($path_dir)) return false;
$rs = scandir($path_dir);
foreach ($rs as $k => $v){
if ($v === '.' || $v === '..') continue;
$path = $path_dir.rtrim($v,'/');
if (is_file($path)){
$rs = move_file($path);
if ($rs['status']){
$rs = "finish";
}else{
$rs = $rs['msg'];
}
log_msg("{$path}---{$rs}");
continue;
}
if (is_dir($path."/")) scan_dir($path."/");
}
}
PHP实现图片批量压缩的更多相关文章
- Winform文件夹图片批量压缩整理修改
效果图: 窗体设计器生成的代码: namespace ImageCompact { partial class MainForm { /// <summary> /// 必需的设计器变量. ...
- java 图片 批量 压缩 +所有压缩
/* oldsrc : 原图片地址目录 如 'd:/' newsrc : 压缩后图片地址目录 如 'e:/' widthdist,heightdist : 压缩后的宽和高 ...
- shell 批量压缩指定文件夹及子文件夹内图片
shell 批量压缩指定文件夹及子文件夹内图片 用户上传的图片,一般都没有经过压缩,造成空间浪费.因此须要编写一个程序,查找文件夹及子文件夹的图片文件(jpg,gif,png),将大于某值的图片进行压 ...
- pthon 批量压缩当前目录,子目录下图片
需求 经常可能有需要压缩图片的需求. 但是一些批量处理图片的软件又仅仅支持压缩一个目录下的图片, 所以写下了这个图片处理程序: 需要安装: python 2.x Image模块 特点: 压缩当前目录, ...
- tinypng的python批量压缩图片功能
tinypng网站提供的图片压缩功能很不错,但是直接在网站上压缩有限制,大量压缩图片时比较麻烦,还好官方提供了很多脚本的自动化压缩接口.下面简单说下python批量压缩步骤. 1.申请api key ...
- 10 行 Python 代码,批量压缩图片 500 张,简直太强大了
本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/5hpFDgjCpfb0O1Jg-ycACw 熟悉 "Pyth ...
- 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...
- 使用Python轻松批量压缩图片
在互联网,图片的大小对一个网站的响应速度有着明显的影响,因此在提供用户预览的时候,图片往往是使用压缩后的.如果一个网站图片较多,一张张压缩显然很浪费时间.那么接下来,我就跟大家分享一个批量压缩图片的方 ...
- C# Winform版批量压缩图片程序
需求 上周,领导给我分配了一个需求:服务器上的图片文件非常大,每天要用掉两个G的大小的空间,要做一个自动压缩图片的工具处理这些大图片.领导的思路是这样的: 1)打开一个图片,看它的属性里面象素是多少, ...
随机推荐
- ES3之cookie
一 cookie的作用域由文档源(domain)和文档路径(path)决定. 当前页面的脚本只能操作:当前源的当前路径的cookie.当前源的父路径的cookie. 向服务器发送请求时,请求头(Req ...
- [剑指Offer]快排
快排 看到一篇博文提到"东拆西补"的思想,非常贴切了. 这里采用传统的方法,没有采用剑指Offer书上的方法. 细节很多,需巩固. 其他知识点 生成一个范围内随机数 见代码,这里为 ...
- 【分布式架构】“spring cloud”与“dubbo”微服务的对比
秉承站在巨人的肩膀上,同时我也不想重复制造轮子,我发现了一系列关于“分布式架构”方面,我需要,同时能够解决我的一些疑惑.问题的博客,转载过来,原文链接: http://blog.csdn.net/ ...
- spring boot 1.5.3项目放到resin4.0.53报错
报错信息: {main} java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImp ...
- PyQt5速成教程
博客地址 https://www.jianshu.com/nb/26159952
- istio-jaeger-python调用链配置
虽然,istio ingress controller已经生成了jaeger 记录所需要的信息,但是多个分布式之间没法清晰记录相互之间的依赖关系.所以相关的项目还需要加入特殊配置. 如:python- ...
- iOS.ChangeIniOS7
1. Multitasking in iOS 7 http://www.objc.io/issue-5/multitasking.html http://www.slideshare.net/mrem ...
- Xstream将XML转换为javabean的问题
1.问题:Xstream is not security 解决方法:加上 2.问题:如果没有第二行代码,会出现xstream forbiddenclassexception 解决方法:加上第二行,其中 ...
- Delphi各种Socket组件的模式和模型
Delphi各种Socket组件的模式和模型 Delphi的大多数书籍里面都没有提到delphi的各种socket通信组件的模式和模型,有的书只讲解了windows的socket模式和模型,并没有归纳 ...
- 当前页面刷新和动态添加控件的jquery事件绑定on
当前页面刷新(console): location.reload() 给动态添加的控件添加js事件(委托): <ul> <li>菜单一</li> <li> ...