Bootstrap

【Python实战】教你如何用Python批量裁剪图片,轻松提升工作效率!

本文旨在介绍基于Python如何批量裁剪图片并保存,主要内容包括以下几个方面:

裁剪图片的原理与方法、Python中用于裁剪图片的库、代码实现过程以及批量裁剪图片的实际案例等。

一、裁剪图片的原理与方法

图片裁剪是指将一张图片中的某一部分选中并保存,通常用于将图片缩小或者只选取图片中的部分内容。

具体来看,图片裁剪的过程大致包括以下几个步骤:

  1. 选定裁剪区域。

需要确定需要裁剪的区域,以一定的方式选定区域的位置和大小。

  1. 选定裁剪方式。

需要确定使用何种方式对图片进行裁剪,例如按照比例缩放、按照像素大小裁剪、按照像素位置裁剪等。

  1. 裁剪图片并保存。

使用选定的裁剪方式对图片进行裁剪,并将裁剪后的图片保存到指定的位置。

针对以上步骤,Python中有许多用于裁剪图片的库可以使用,下面将分别介绍。

二、Python中用于裁剪图片的库
  1. Pillow库

Pillow是Python的一个图像处理库,提供了许多图像处理操作,其中也包括图片裁剪。

使用Pillow裁剪图片的代码示例如下:

from PIL import Image  
  
# 打开图片image,并裁剪出左上角为(0,0),右下角为 (100, 100) 的矩形区域  
image = Image.open("image.jpg")  
rect = (0, 0, 100, 100)  
crop_image = image.crop(rect)  
crop_image.show()  

以上代码首先使用Pillow库中的Image模块打开了一张名为“image.jpg”的图片。

然后使用crop()方法对该图片进行裁剪,裁剪出左上角为(0,0),右下角为(100,100)的矩形区域。

并将该区域保存到变量crop_image中,最后使用show()方法展示裁剪后的图片。

  1. opencv-python库

OpenCV是一个广泛应用于计算机视觉领域的开源计算机视觉库。

它拥有一系列用于图像处理和计算机视觉的函数、类和工具,并提供了Python的接口。

使用opencv-python库裁剪图片的代码示例如下:

import cv2  
  
# 打开图片image,并裁剪出左上角为(0,0),右下角为 (100, 100) 的矩形区域  
image = cv2.imread("image.jpg")  
rect = (0, 0, 100, 100)  
crop_image = image[rect[1]:rect[3], rect[0]:rect[2]]  
cv2.imshow("crop_image", crop_image)  
cv2.waitKey(0)  
cv2.destroyAllWindows()  

以上代码首先使用opencv-python库中的imread()方法打开了一张名为“image.jpg”的图片。

然后使用数组索引对该图片进行裁剪,裁剪出左上角为(0,0),右下角为(100,100)的矩形区域。

并将该区域保存到变量crop_image中,最后使用imshow()方法展示裁剪后的图片。

三、代码实现过程

在介绍代码实现过程之前,需要先安装Python的图像处理库Pillow。

在安装Pillow库之前,需要确保已安装Python版本不低于Python3.7。

安装Pillow库的命令为:

pip install Pillow  

安装完成之后,就可以使用Pillow库中的Image模块进行图片裁剪操作。

具体实现步骤如下:

  1. 导入Pillow库中的Image模块
from PIL import Image  

  1. 打开需要裁剪的图片,并设置需要裁剪的区域
image_path = "image.jpg"  
image = Image.open(image_path)  
rect = (0, 0, 100, 100)  

  1. 对图片进行裁剪,并保存到指定路径
crop_image = image.crop(rect)  
crop_image.save("crop_image.jpg")  

完整的Python裁剪图片代码示例如下:

from PIL import Image  
  
image_path = "image.jpg"  
image = Image.open(image_path)  
rect = (0, 0, 100, 100)  
  
crop_image = image.crop(rect)  
crop_image.save("crop_image.jpg")  

以上代码首先使用Pillow库中的Image模块打开了一张名为“image.jpg”的图片。

然后使用crop()方法对该图片进行裁剪,裁剪出左上角为(0,0)。

右下角为(100,100)的矩形区域,并将该区域保存到名为“crop_image.jpg”的文件中。

四、批量裁剪图片案例

批量裁剪图片是指同时对指定路径下所有图片进行裁剪操作。

具体实现过程与单张图片裁剪相似,只需要在代码中对指定路径下的所有图片进行循环即可。

下面是一个这样的实际案例:

需求:批量将指定文件夹下所有图片的左上角裁剪为正方形并保存。

  1. 确定裁剪区域

裁剪的区域为左上角正方形,大小为图片中宽度和高度中小的那个值。

def get_rect(image):  
    width, height = image.size  
    size = min(width, height)  
    rect = (0, 0, size, size)  
    return rect  

以上代码中,get_rect()函数接收一张PIL格式的图片作为参数,获取该图片的宽度和高度,并计算出左上角正方形的大小。

最后将左上角正方形的坐标和大小封装成一个元组并返回。

  1. 批量裁剪图片并保存

对所有图片进行循环裁剪,并将裁剪后的图片保存在指定路径下。

import os  
  
def crop_images(root_path, save_path):  
    images = os.listdir(root_path)  
    for image_name in images:  
        if image_name.endswith(".jpg") or image_name.endswith(".png"):  
            image_path = os.path.join(root_path, image_name)  
            image = Image.open(image_path)  
            rect = get_rect(image)  
            crop_image = image.crop(rect)  
            crop_image.save(os.path.join(save_path, image_name))  

以上代码中,crop_images()函数接收两个参数,root_path表示需要裁剪图片的文件夹路径,save_path表示裁剪后保存的文件夹路径。

首先使用os.listdir()方法获取root_path文件夹下的所有文件和文件夹名,并对所有文件进行循环。

如果文件名以“.jpg”或“.png”结尾,则认为该文件是图片文件,获取该文件的完整路径并打开该图片。

然后调用get_rect()函数获取该图片需要裁剪的区域,使用crop()方法进行裁剪,并将裁剪后的图片保存到指定路径下。

完整的Python批量裁剪图片代码示例如下:

from PIL import Image  
import os  
  
def get_rect(image):  
    width, height = image.size  
    size = min(width, height)  
    rect = (0, 0, size, size)  
    return rect  
  
def crop_images(root_path, save_path):  
    images = os.listdir(root_path)  
    for image_name in images:  
        if image_name.endswith(".jpg") or image_name.endswith(".png"):  
            image_path = os.path.join(root_path, image_name)  
            image = Image.open(image_path)  
            rect = get_rect(image)  
            crop_image = image.crop(rect)  
            crop_image.save(os.path.join(save_path, image_name))  
  
root_path = "images"  
save_path = "cropped_images"  
crop_images(root_path, save_path)  

以上代码假设存在一个名为“images”的文件夹,其中包含需要裁剪的所有图片,裁剪结果将保存到名为“cropped_images”的文件夹下。

五、总结

本文详细介绍了Python如何通过Pillow库对单张或批量图片进行裁剪操作,通过实际案例演示了批量裁剪图片的具体实现过程。

掌握了这些知识,我们可以更加轻松地对大量图片进行批量处理,节省时间和精力。

当然,图片裁剪只是图像处理的冰山一角,希望通过本文的介绍可以为读者提供更多启发,更好地掌握Python图像处理的技巧和方法。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

;