Python | 八个图片自动化脚本,一定有你用得上的!

开发 前端
你是不是遇到过这样的情况,下载了一大堆图片,却都是毫无意义的默认名字,比如DSC001, DSC002等。如果能按照某个规律批量重命名,那将会方便很多。这个脚本将展示如何使用Python批量重命名文件夹中的图片。

这次和大家分享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. 总结

掌握了这些基础的图片处理脚本后,你可以尝试学习更多图像处理的进阶技术,比如图像识别、分类、增强等。

责任编辑:武晓燕 来源: 且听数据说
相关推荐

2022-08-05 09:06:07

Python脚本代码

2025-01-08 08:53:05

2022-07-19 06:24:02

微服务高可用

2022-07-11 10:08:19

系统管理任务自动化

2020-10-29 18:38:39

PythonGitHub代码

2024-09-25 10:00:00

Python自动化办公

2022-06-02 10:56:30

MySQL数据库技术

2020-07-11 09:22:02

机器人流程自动化人工智能

2024-05-13 16:29:56

Python自动化

2024-11-13 13:14:38

2021-11-30 07:01:19

Python自动化脚本

2024-08-16 21:51:42

2022-02-17 13:03:28

Python脚本代码

2024-06-21 10:46:44

2024-04-09 14:35:54

工业 4.0工业自动化人工智能

2024-10-21 17:46:54

前端开发

2019-10-18 12:57:38

边缘计算云计算安全

2022-10-09 14:50:44

Python脚本

2016-09-19 15:15:01

shellbash脚本

2012-11-01 11:11:36

Web设计Web设计
点赞
收藏

51CTO技术栈公众号