这次和大家分享8个实用的Python图片处理脚本,包括重命名、裁剪、调整大小、添加水印、格式转换、图片合并、添加边框和生成缩略图。
如果本文对你有帮助,烦请给个一键三连(点赞、转发、在看),这对我很重要!
1. 脚本一:批量重命名图片
1.1 使用场景
你是不是遇到过这样的情况,下载了一大堆图片,却都是毫无意义的默认名字,比如DSC001, DSC002等。如果能按照某个规律批量重命名,那将会方便很多。这个脚本将展示如何使用Python批量重命名文件夹中的图片。
1.2 示例代码
import os
def batch_rename(path, new_name):
for count, filename in enumerate(os.listdir(path)):
file_ext = filename.split('.')[-1]
new_filename = f"{new_name}_{count + 1}.{file_ext}"
src = os.path.join(path, filename)
dst = os.path.join(path, new_filename)
os.rename(src, dst)
print("重命名完成!")
# 调用函数
batch_rename('path/to/your/images', 'new_image_name')
2. 脚本二:裁剪图片
2.1 使用场景
有时候我们只需要图片中的一部分,比如头像、标识等。这时候使用Python脚本进行批量裁剪,可以帮你快速得到想要的图片部分。
2.2 示例代码
from PIL import Image
def crop_image(input_path, output_path, crop_area):
image = Image.open(input_path)
cropped_image = image.crop(crop_area)
cropped_image.save(output_path)
print(f"裁剪完成,保存为{output_path}")
# 调用函数
crop_image('path/to/your/image.jpg', 'path/to/save/cropped_image.jpg', (100, 100, 400, 400))
3. 脚本三:调整图片大小
3.1 使用场景
在制作网页或者需要上传图片到某些平台时,通常要求图片大小一致。这个脚本能帮你批量调整图片的尺寸,省时又省力。
3.2 示例代码
from PIL import Image
def resize_image(input_path, output_path, size):
image = Image.open(input_path)
resized_image = image.resize(size)
resized_image.save(output_path)
print(f"调整大小完成,保存为{output_path}")
# 调用函数
resize_image('path/to/your/image.jpg', 'path/to/save/resized_image.jpg', (800, 800))
4. 脚本四:添加水印
4.1 使用场景
为了保护自己的图片版权或者想显示一些标识,你可能需要为图片添加水印。使用这个脚本,可以方便地在图片上加上你想要的水印。
4.2 示例代码
from PIL import Image, ImageDraw, ImageFont
def add_watermark(input_path, output_path, watermark_text, position):
image = Image.open(input_path)
watermark = Image.new('RGBA', image.size)
font = ImageFont.truetype("arial.ttf", 36)
draw = ImageDraw.Draw(watermark, 'RGBA')
draw.text(position, watermark_text, font=font, fill=(255, 255, 255, 128))
watermarked_image = Image.alpha_composite(image.convert('RGBA'), watermark)
watermarked_image.save(output_path)
print(f"添加水印完成,保存为{output_path}")
# 调用函数
add_watermark('path/to/your/image.jpg', 'path/to/save/watermarked_image.png', 'Watermark', (10, 10))
5. 脚本五:批量转换图片格式
5.1 使用场景
当需要统一图片格式,比如从JPEG转换为PNG,以适应某些平台或减少文件大小时,可以使用这个脚本。
5.2 示例代码
from PIL import Image
import os
def batch_convert_format(input_folder, output_folder, target_format):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('jpeg', 'jpg', 'png', 'bmp')):
img = Image.open(os.path.join(input_folder, filename))
base = os.path.splitext(filename)[0]
new_filename = f"{base}.{target_format}"
img.save(os.path.join(output_folder, new_filename))
print(f"转换 {filename} 为 {new_filename}")
# 调用函数
batch_convert_format('path/to/your/images', 'path/to/save/converted_images', 'png')
6. 脚本六:图片合并
6.1 使用场景
有时候我们需要将多个图片合并为一张图片,比如制作拼图或者报告封面。这个脚本可以帮助你实现这些需求。
6.2 示例代码
from PIL import Image
def merge_images(image_paths, output_path, direction='horizontal'):
images = [Image.open(image) for image in image_paths]
if direction == 'horizontal':
widths, heights = zip(*(i.size for i in images))
total_width = sum(widths)
max_height = max(heights)
new_image = Image.new('RGB', (total_width, max_height))
x_offset = 0
for img in images:
new_image.paste(img, (x_offset, 0))
x_offset += img.width
else:
widths, heights = zip(*(i.size for i in images))
max_width = max(widths)
total_height = sum(heights)
new_image = Image.new('RGB', (max_width, total_height))
y_offset = 0
for img in images:
new_image.paste(img, (0, y_offset))
y_offset += img.height
new_image.save(output_path)
print(f"图片合并完成,保存为{output_path}")
# 调用函数
merge_images(['path/to/image1.jpg', 'path/to/image2.jpg'], 'path/to/save/merged_image.jpg', 'horizontal')
7. 脚本七:为图片添加边框
7.1 使用场景
在设计和展示图片时,加上合适的边框可以使图片看起来更加精美和专业。这个脚本可以为图片添加不同颜色和宽度的边框。
7.2 示例代码
from PIL import ImageOps
def add_border(input_path, output_path, border_size, color):
image = Image.open(input_path)
bordered_image = ImageOps.expand(image, border=border_size, fill=color)
bordered_image.save(output_path)
print(f"添加边框完成,保存为{output_path}")
# 调用函数
add_border('path/to/your/image.jpg', 'path/to/save/bordered_image.jpg', border_size=10, color='black')
8. 脚本八:生成图像缩略图
8.1 使用场景
为了快速浏览和管理大量图片,我们常常需要生成缩略图。这个脚本可以帮你生成指定大小的缩略图。
8.2 示例代码
from PIL import Image
def create_thumbnail(input_path, output_path, thumbnail_size):
image = Image.open(input_path)
image.thumbnail(thumbnail_size)
image.save(output_path)
print(f"生成缩略图完成,保存为{output_path}")
# 调用函数
create_thumbnail('path/to/your/image.jpg', 'path/to/save/thumbnail_image.jpg', (150, 150))
9. 总结
掌握了这些基础的图片处理脚本后,你可以尝试学习更多图像处理的进阶技术,比如图像识别、分类、增强等。