写一个可以将文件夹里面的图片全部resize成640×640的代码
时间: 2025-08-05 07:09:39 浏览: 5
<think>我们将使用Python的PIL库(Pillow)来处理图片的缩放。
首先,我们需要安装Pillow库(如果尚未安装):
pip install Pillow
然后,编写一个脚本来遍历指定文件夹中的所有图片文件,将它们调整为640x640像素。
注意:调整图片大小时,我们可能需要考虑保持图片的宽高比,以避免图片变形。常见的做法是使用缩略图(thumbnail)方法或者resize方法并配合一个背景填充(如果要求固定尺寸且不裁剪的话)。
但是,问题要求将图片全部resize成640x640,这通常意味着我们需要将图片缩放并填充到目标尺寸,可能会裁剪或添加黑边。
有两种常见方式:
1. 拉伸图片以适应目标尺寸(会变形)。
2. 保持宽高比,将图片缩放至至少有一个维度等于目标尺寸,然后裁剪或填充多余部分。
由于问题没有特别说明,我们假设要求是保持宽高比,并将图片缩放至完全覆盖640x640(即最小的边缩放至640,然后裁剪掉多余部分),或者缩放至在640x640内,然后填充黑边。
这里我们提供两种方案,并让用户选择(或者根据需求修改)。但问题要求是“全部resize成640×640”,我们这里采用保持宽高比并填充黑边(即不裁剪,而是将图片放在640x640的中心,周围用黑色填充)的方式,这样不会丢失任何部分。
具体步骤:
1. 遍历文件夹中的所有文件。
2. 判断文件是否为图片(通过扩展名)。
3. 打开图片,计算缩放比例,使得图片在保持宽高比的情况下,缩放至能完全放入640x640的框内(即长边等于640,短边按比例缩放)。
4. 创建一个新的640x640的黑色背景图片。
5. 将缩放后的图片粘贴到黑色背景的中心位置。
6. 保存图片(可以选择覆盖原文件或另存为新文件)。
我们也可以选择裁剪的方式:缩放至短边为640,然后从中心裁剪出640x640的区域。
由于问题没有明确,这里我们实现填充黑边的方式(不裁剪,保留全部内容)。
我们将编写一个函数来处理单个图片,然后遍历文件夹。
注意:为了避免覆盖原文件,我们将处理后的图片保存到另一个文件夹(或者在原文件名后添加后缀)。这里我们选择保存到新的文件夹。
假设输入文件夹为`input_folder`,输出文件夹为`output_folder`。
代码实现如下:</think>以下是一个使用Python实现的批量图片缩放脚本,使用Pillow库将指定文件夹内的所有图片调整为640×640像素:
```python
import os
from PIL import Image
def resize_images(input_folder, output_folder, target_size=(640, 640)):
"""
将输入文件夹中的所有图片调整为指定尺寸,并保存到输出文件夹
参数:
input_folder: 包含原始图片的文件夹路径
output_folder: 保存处理后图片的文件夹路径
target_size: 目标尺寸 (宽度, 高度)
"""
# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)
# 支持的图片格式
valid_extensions = ('.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff', '.webp')
print(f"开始处理文件夹: {input_folder}")
processed_count = 0
for filename in os.listdir(input_folder):
if filename.lower().endswith(valid_extensions):
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, filename)
try:
with Image.open(input_path) as img:
# 保持原始宽高比进行缩放
img.thumbnail(
(target_size[0] * 2, target_size[1] * 2),
Image.LANCZOS
)
# 创建640x640的新图像(白色背景)
new_img = Image.new('RGB', target_size, (255, 255, 255))
# 计算居中粘贴位置
paste_x = (target_size[0] - img.width) // 2
paste_y = (target_size[1] - img.height) // 2
# 将缩放后的图像粘贴到中心
new_img.paste(img, (paste_x, paste_y))
# 保存处理后的图像(保持原始格式)
new_img.save(output_path)
print(f"已处理: {filename} → {img.width}x{img.height} → 640x640")
processed_count += 1
except Exception as e:
print(f"处理 {filename} 时出错: {str(e)}")
print(f"处理完成! 共处理 {processed_count} 张图片")
print(f"输出目录: {os.path.abspath(output_folder)}")
if __name__ == "__main__":
# 配置路径
INPUT_FOLDER = "path/to/your/input/folder" # 替换为你的输入文件夹路径
OUTPUT_FOLDER = "path/to/your/output/folder" # 替换为你的输出文件夹路径
# 执行缩放
resize_images(INPUT_FOLDER, OUTPUT_FOLDER, (640, 640))
```
### 代码详解:
1. **准备工作**:
- 导入必要的库:`os`用于文件操作,`PIL.Image`用于图像处理
- 定义支持的图片格式列表(常见图片格式)
2. **核心功能**:
- `img.thumbnail()`:保持原始宽高比进行缩放,使用LANCZOS高质量插值算法
- `Image.new()`:创建640×640的白色背景新图像
- 居中计算:计算原始图片在新画布上的居中位置
- `paste()`:将缩放后的图片粘贴到新画布中心
3. **处理流程**:
- 遍历输入文件夹的所有文件
- 过滤出图片文件(根据扩展名)
- 对每张图片执行缩放+居中操作
- 保存处理后的图片到输出文件夹
- 错误处理:跳过无法处理的图片并打印错误信息
4. **保持宽高比策略**:
- 先将图片缩放到不超过1280×1280(保持宽高比)
- 然后居中放置在640×640的画布上
- 空白区域自动填充为白色背景
### 使用说明:
1. 安装依赖:
```bash
pip install Pillow
```
2. 修改脚本中的路径:
```python
INPUT_FOLDER = "path/to/your/input/folder" # 原始图片所在目录
OUTPUT_FOLDER = "path/to/your/output/folder" # 处理后图片保存目录
```
3. 运行脚本:
```bash
python resize_images.py
```
### 特性:
- 保持原始宽高比(不拉伸变形)
- 自动跳过非图片文件
- 错误处理机制
- 保留原始图片格式
- 白色背景填充
- 详细的处理日志
### 示例输出:
```
开始处理文件夹: /photos/input
已处理: image1.jpg → 1280x720 → 640x640
已处理: image2.png → 800x600 → 640x640
已处理: image3.webp → 480x640 → 640x640
处理完成! 共处理 3 张图片
输出目录: /photos/output
```
阅读全文
相关推荐




















