Python脚本批量处理图片,批量压缩图片,轻松压缩路径下的所有图片

了解如何使用 Python 编写一个简单实用的图片压缩工具,它可以轻松压缩指定路径下的所有图片。通过该工具,您可以快速减小图片文件的大小,节省存储空间并提高网页加载速度。本文将介绍如何使用 Python 编写图片压缩工具,并演示了两种压缩方法,包括同类型压缩和转换为 jpg 格式进行压缩。跟随本文一起学习吧! 介绍 在现代社交媒体和网页设计中,图像是不可或缺的元素之一。然而,高分辨率的图片文件往往占用大量的存储空间,导致网页加载速度变慢,用户体验下降。为了解决这个问题,我们可以使用 Python 编写一个简单而实用的图片压缩工具,它能够快速压缩指定路径下的所有图片文件。 实现图片压缩工具的准备工作 在开始编写代码之前,我们需要安装 Python 的 Pillow 库,它提供了强大的图像处理功能。可以通过以下命令来安装 Pillow 库: pip install pillow 安装完成后,我们可以开始编写代码来实现图片压缩工具。 Python 代码实现 下面是使用 Python 编写的图片压缩工具代码: import os from PIL import Image def compress_images(input_dir, output_dir, quality=80): # 确保输出文件夹存在 if not os.path.exists(output_dir): os.makedirs(output_dir) # 遍历输入文件夹中的所有文件 for filename in os.listdir(input_dir): file_path = os.path.join(input_dir, filename) # 检查文件是否为图片 if not os.path.isfile(file_path) or not any(file_path.endswith(ext) for ext in ['.jpg', '.jpeg', '.png']): continue # 打开图像文件 with Image.open(file_path) as image: # 压缩图像并保存到输出文件夹 output_path = os.path.join(output_dir, filename) image.save(output_path, optimize=True, quality=quality) print(f'Compressed: {output_path}') # 指定输入和输出文件夹路径 input_folder = './' # 输入文件夹路径 output_folder = './output' # 输出文件夹路径 quality = 70 # 压缩等级 1-100 # 调用函数进行图片压缩 compress_images(input_folder, output_folder, quality) 以上代码使用了 Python 的 os 模块和 Pillow 库。首先,我们定义了一个 compress_images 函数,它接受输入文件夹路径、输出文件夹路径和可选的压缩质量参数。在函数内部,我们通过遍历输入文件夹中的所有文件,筛选出扩展名为 .jpg、 .jpeg 和 .png 的图片文件。然后,我们使用 Pillow 库打开每个图片文件,并将其压缩保存到输出文件夹中。压缩后的图片文件保持原文件名。 ...

2023年7月4日 · 2 分钟 · 诚哥博客

Python脚本批量处理图片,缩放裁剪压缩到指定大小

本文将介绍如何使用 Python 编写脚本批量处理图片。我们将使用 Pillow 库来缩放、裁剪和压缩图片,并使用 MD5 哈希值来重命名输出文件。通过本文的学习,您将学习如何使用 Python 快速自动化处理大量图片。 简介 对于需要处理大量图片的工作,例如调整图片大小、裁剪图片等,手动处理是非常繁琐的。为了提高工作效率,我们可以使用 Python 编写脚本来自动化这些任务。在本文中,我们将介绍如何使用 Python 编写脚本来批量处理图片。 环境准备 在开始编写脚本之前,我们需要确保已安装必要的库。在本文中,我们将使用 Pillow 库来处理图片。您可以使用以下命令来安装 Pillow 库: pip install Pillow 编写 Python 脚本 from PIL import Image import os import hashlib input_folder = "/Users/rakers/Library/Containers/com.macosgame.iwallpaperstatic/Data/Documents/OriginalImage/" # 原始图片文件夹路径 output_folder = "./thumb/" # 处理后图片文件夹路径 target_size = (1920, 1080) # 目标大小 if not os.path.exists(output_folder): os.makedirs(output_folder) for filename in os.listdir(input_folder): if not (filename.endswith('.png') or filename.endswith('.jpeg') or filename.endswith('.jpg')): continue try: with Image.open(os.path.join(input_folder, filename)) as img: width, height = img.size if width < height: new_width = target_size[0] new_height = int(height * new_width / width) else: new_height = target_size[1] new_width = int(width * new_height / height) resized_img = img.resize((new_width, new_height)) cropped_img = resized_img.crop((0, 0, target_size[0], target_size[1])) # 获取文件的MD5哈希值,并用它作为新文件名 hash_md5 = hashlib.md5(cropped_img.tobytes()) new_filename = hash_md5.hexdigest() + '.jpg' cropped_img.save(os.path.join(output_folder, new_filename), 'JPEG', quality=95) except Exception as e: print(f"Error processing {filename}: {str(e)}") 运行测试 python3 thumb.py 坐等输出: ...

2023年3月30日 · 1 分钟 · 诚哥博客