Python exe 程序,手动设置照片内存大小,文件夹,子文件夹,运行程序,把照片jpg格式,把图片自动压缩500kb后,删除原始图片,小于500kb照片自动跳过
时间: 2024-03-23 20:41:19 浏览: 96
可以使用 argparse 模块来实现手动设置参数。以下是一个示例代码:
```python
from PIL import Image
import os
import argparse
# 创建命令行参数
parser = argparse.ArgumentParser(description='Compress JPEG images in a folder and its subfolders.')
parser.add_argument('folder_path', type=str, help='the path to the folder to process')
parser.add_argument('--size', type=int, default=500, help='the target size of compressed images in KB')
# 解析命令行参数
args = parser.parse_args()
folder_path = args.folder_path
compress_size = args.size
def compress_images(folder_path):
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
if os.path.isfile(file_path) and file_name.endswith(".jpg"):
with Image.open(file_path) as img:
# 获取图片大小并计算压缩后的大小
size = os.path.getsize(file_path)
compress_ratio = compress_size * 1024 / size
if compress_ratio < 1:
# 压缩图片并保存
new_size = (int(img.size[0] * compress_ratio), int(img.size[1] * compress_ratio))
img.thumbnail(new_size, Image.ANTIALIAS)
img.save(file_path, quality=95)
else:
print(f"{file_name} skipped")
# 删除原始图片
os.remove(file_path)
elif os.path.isdir(file_path):
compress_images(file_path)
compress_images(folder_path)
```
在命令行中执行 `python your_script_name.py your_folder_path --size 300` 就可以将 `your_folder_path` 文件夹及其子文件夹下的jpg格式图片压缩到 300KB 以下,原始图片将被删除。如果不指定 `--size` 参数,则默认压缩到 500KB 以下。
阅读全文