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实现图片批量压缩的更多相关文章

  1. Winform文件夹图片批量压缩整理修改

    效果图: 窗体设计器生成的代码: namespace ImageCompact { partial class MainForm { /// <summary> /// 必需的设计器变量. ...

  2. java 图片 批量 压缩 +所有压缩

    /* oldsrc  : 原图片地址目录 如 'd:/'    newsrc  : 压缩后图片地址目录 如 'e:/'    widthdist,heightdist : 压缩后的宽和高       ...

  3. shell 批量压缩指定文件夹及子文件夹内图片

    shell 批量压缩指定文件夹及子文件夹内图片 用户上传的图片,一般都没有经过压缩,造成空间浪费.因此须要编写一个程序,查找文件夹及子文件夹的图片文件(jpg,gif,png),将大于某值的图片进行压 ...

  4. pthon 批量压缩当前目录,子目录下图片

    需求 经常可能有需要压缩图片的需求. 但是一些批量处理图片的软件又仅仅支持压缩一个目录下的图片, 所以写下了这个图片处理程序: 需要安装: python 2.x Image模块 特点: 压缩当前目录, ...

  5. tinypng的python批量压缩图片功能

    tinypng网站提供的图片压缩功能很不错,但是直接在网站上压缩有限制,大量压缩图片时比较麻烦,还好官方提供了很多脚本的自动化压缩接口.下面简单说下python批量压缩步骤. 1.申请api key ...

  6. 10 行 Python 代码,批量压缩图片 500 张,简直太强大了

    本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/5hpFDgjCpfb0O1Jg-ycACw 熟悉 "Pyth ...

  7. 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...

  8. 使用Python轻松批量压缩图片

    在互联网,图片的大小对一个网站的响应速度有着明显的影响,因此在提供用户预览的时候,图片往往是使用压缩后的.如果一个网站图片较多,一张张压缩显然很浪费时间.那么接下来,我就跟大家分享一个批量压缩图片的方 ...

  9. C# Winform版批量压缩图片程序

    需求 上周,领导给我分配了一个需求:服务器上的图片文件非常大,每天要用掉两个G的大小的空间,要做一个自动压缩图片的工具处理这些大图片.领导的思路是这样的: 1)打开一个图片,看它的属性里面象素是多少, ...

随机推荐

  1. redis-storage介绍[转]

    背景: 当时我们正在做一个游戏项目,游戏项目相比于web项目,更追求的是单机的性能,而我们对单个请求的处理时间有着bt级的需求(一个完整的api请求控制在10ms以内).当时我们的数据层用的是ttse ...

  2. 六.Spring与RabbitMQ集成--HelloWorld

    spring对RabbitMQ做了很好的集成,我们称之为spring AMQP,其官方文档写得十分详尽,文档地址:https://docs.spring.io/spring-amqp/referenc ...

  3. spring boot项目打包成war并在tomcat上运行的步骤

    把spring-boot项目按照平常的web项目一样发布到tomcat容器下 一.修改打包形式 在pom.xml里设置 <packaging>war</packaging> 二 ...

  4. linux命令学习之:df

    df命令用于显示磁盘分区上的可使用的磁盘空间.默认显示单位为KB.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 语法 df (选项) (参数) 选项 -a或--all:包含全部 ...

  5. 微信小程序中用setData修改一个对象的属性值

    原创文章 1. Page({    data: {      items:{ //items为一个对象,is_like和like分别为其两个属性     is_like: 0,    like: 0 ...

  6. go语言中的反射reflect

    package main; import ( "fmt" "reflect" ) //反射refection //反射使用TypeOf和ValueOf函数从接口 ...

  7. css让内层div自动撑开外层div

    .clear{clear:both;height:0px;font-size: 1px;line-height: 0px;} <div class="audi_items"& ...

  8. jar导入本地maven库

    最近在了解视频监控相关sdk,海康威视官方sdk要求自己手工将fas-data-sdk-1.0-SNAPSHOT.jar导入本地maven库,maven配置文件pom.xml配置如下 <?xml ...

  9. vs的【warning C4996:'fopen': This function or variable may be unsafe】解决方案

    编译警告:warning C4996 与 Security Enhancements in the CRT 将过去的工程用VS2005打开的时候.你有可能会遇到一大堆的警告:warning C4996 ...

  10. c# sharpsvn 客户端开发测试

    1:没有工作副本,上传时会报错的. 会提示本地目录不是not a working copy   而此中文名称就是工作副本, 本地要与svn服务器公用的一个文件夹. 所以每次要checkout 然后才能 ...