Files
jigsaw/split01.py
2024-12-03 11:34:51 +13:00

47 lines
1.3 KiB
Python

from PIL import Image
import os
def split_image(image_path, output_dir, rows=10, cols=10):
"""
将图片切成指定行列的小块。
参数:
image_path (str): 输入图片的路径。
output_dir (str): 保存小块图片的目录。
rows (int): 切分的行数。
cols (int): 切分的列数。
"""
# 打开图片
img = Image.open(image_path)
img_width, img_height = img.size
# 计算每块的宽和高
piece_width = img_width // cols
piece_height = img_height // rows
# 创建输出目录
os.makedirs(output_dir, exist_ok=True)
# 遍历切割
for row in range(rows):
for col in range(cols):
# 定义每块的区域 (left, upper, right, lower)
left = col * piece_width
upper = row * piece_height
right = (col + 1) * piece_width
lower = (row + 1) * piece_height
# 裁剪出小块并保存
piece = img.crop((left, upper, right, lower))
piece_path = os.path.join(output_dir, f"piece_{row}_{col}.png")
piece.save(piece_path)
print(f"图片已分割成 {rows * cols} 小块,保存到:{output_dir}")
# 使用示例
image_path = "input.jpg" # 输入图片路径
output_dir = "output_pieces" # 输出目录
split_image(image_path, output_dir)