shell 批量压缩指定目录及子目录内图片的方法

用户上传的图片,一般都没有经过压缩,造成空间浪费。因此需要编写一个程序,查找目录及子目录的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理。

代码如下:

#!/bin/bash

# 查找目录及子目录的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理

# Config

folderPath='/home/fdipzone/photo'  # 图片目录路径

maxSize='1M'  # 图片尺寸允许值
maxWidth=1280  # 图片最大宽度
maxHeight=1280 # 图片最大高度
quality=85   # 图片质量

# 压缩处理
# Param $folderPath 图片目录
function compress(){

  folderPath=$1

  if [ -d "$folderPath" ]; then

    for file in $(find "$folderPath" \( -name "*.jpg" -or -name "*.gif" -or -name "*.png" \) -type f -size +"$maxSize" ); do

      echo $file

      # 调用imagemagick resize图片
      $(convert -resize "$maxWidth"x"$maxHeight" "$file" -quality "$quality" -colorspace sRGB "$file")

    done

  else
    echo "$folderPath not exists"
  fi
}

# 执行compress
compress "$folderPath"

exit 0

以上这篇shell 批量压缩指定目录及子目录内图片的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • linux下采用shell脚本实现批量为指定文件夹下图片添加水印的方法

    要实现linux下采用shell脚本批量为指定文件夹下图片添加水印,首先需要安装imagemagick: CentOS上安装: yum install ImageMagick -y Debian上安装: apt-get install ImageMagick -y 脚本: #!/bin/bash for each in /要处理的图片目录/*{.jpg,.gif} s=`du -k $each | awk '{print $1}'` if [ $s -gt 10 ]; then #convert

  • 图片批量压缩大小脚本分享

    压缩图片时用的一个脚本,先安装下#ImageMagick# 复制代码 代码如下: #!/bin/bash # yum install ImageMagick # cd /img/dir for file in */*.jpg; do to_middle_file="${file%.*}_m.${file##*.}"; //文件名加后缀 如 hello_m.jpg to_small_file="${file%.*}_s.${file##*.}"; convert ${

  • shell 批量压缩指定目录及子目录内图片的方法

    用户上传的图片,一般都没有经过压缩,造成空间浪费.因此需要编写一个程序,查找目录及子目录的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理. 代码如下: #!/bin/bash # 查找目录及子目录的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理 # Config folderPath='/home/fdipzone/photo' # 图片目录路径 maxSize='1M' # 图片尺寸允许值 maxWidth=1280 # 图片最大宽度 maxHeight=1

  • Python实现批量更换指定目录下文件扩展名的方法

    本文实例讲述了Python实现批量更换指定目录下文件扩展名的方法.分享给大家供大家参考,具体如下: #encoding=utf-8 #author: walker #date: 2013-12-06 #function: 深度遍历指定目录,更换指定扩展名 import os import os.path #读入指定目录并转换为绝对路径 rootdir = raw_input('root dir:\n') rootdir = os.path.abspath(rootdir) print('abso

  • bat 批量提取指定目录下的文件名

    下面是批量获取指定目录下的文件名的核心代码 @echo off echo text input set input= set /p input=: echo %input% is input cd %input% rem @echo on for %%a in (*) do ( echo %%a is input ) cd .. 如下是sql server执行对应脚本文件 sqlcmd -Spcserver -dmaster -Usa -PcrexPT84B -i 脚本文件 由上面两个命令就可以

  • python获取指定目录下所有文件名列表的方法

    本文实例讲述了python获取指定目录下所有文件名列表的方法.分享给大家供大家参考.具体实现方法如下: 这里python代码实现获取文件名列表的功能,可以指定文件中包含的字符,方便提取特定类型的文件名列表: # -*- coding: utf-8 -*- #~ #------------------------------------------------------------------ #~ module:wlab #~ Filename:wgetfilelist.py #~ Funct

  • python在指定目录下查找gif文件的方法

    本文实例讲述了python在指定目录下查找gif文件的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python # Use the standard find method to look for GIF files. import sys, find if len(sys.argv) > 1: dirs = sys.argv[1:] else: dirs = [ '.' ] # Go for it. for dir in dirs: files = find.find

  • Python父目录、子目录的相互调用方法

    最近在使用Python的过程中经常遇到找不到该模块的问题.其中一个就是父目录子目录之间相互调用的情况.下面简单总结下. 我们在F:\Code文件夹下面创建一个test文件夹 而test文件夹里面如下 包含两个子目录 a.py def showdata(): print("this is a") def plus(): a=1 b=2 print(a+b) b.py def show(): print("this is b") 从父目路test.py调用a和b fro

  • shell脚本递归遍历目录及子目录的例子分享

    用shell写的递归遍历目录的脚本,脚本实现递归遍历指定目录,打印目录下的文件名. 实例1: 复制代码 代码如下: #!/bin/sh function scandir() {    local cur_dir parent_dir workdir    workdir=$1    cd ${workdir}    if [ ${workdir} = "/" ]    then        cur_dir=""    else        cur_dir=$(p

  • python复制文件到指定目录的实例

    周末出去爬山,照了一大堆照片回来,照片同时存储为jpg和DNG格式,我用adobe bridge将dng格式的照片中要保留的筛选出来后,就不想再对着一张张去挑jpg的照片了,于是用python写个小程序帮我挑,代码如下所示: import os import shutil targetnames = os.listdir('D:\\Pictures\\照片\\2016年\\东灵山\\star') filenames = os.listdir('D:\\Pictures\\照片\\2016年\\东

  • python打包压缩、读取指定目录下的指定类型文件

    下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch def find_spe_file(root, patterns=['*'], non_cludedir=[]): for root, dirnames, filenames in os.walk(root): for pattern in patterns: for filename in fil

  • python 无损批量压缩图片(支持保留图片信息)的示例

    由于云盘空间有限,照片尺寸也是很大,所以写个Python程序压缩一下照片,腾出一些云盘空间 1.批量压缩照片 新建 photo_compress.py 代码如下 # -*- coding: utf-8 -*- """脚本功能说明:使用 tinypng api,一键批量压缩指定文件(夹)所有文件""" import os import sys from concurrent.futures import ThreadPoolExecutor, Pr

随机推荐