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

本文详细介绍了如何使用Python的Pillow和opencv-python库进行图片裁剪,包括原理、库的使用方法,以及批量裁剪的实际案例。通过这两个库,可以轻松处理单张和多张图片,提高效率。
摘要由CSDN通过智能技术生成

本文旨在介绍基于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 web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。0基础小白也能听懂、看懂,跟着教程走,带你从零基础系统性地学好Python!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述
二、Python学习软件

工欲善其事,必先利其器。学习Python常用的开发软件都在这里了!
在这里插入图片描述
三、Python入门学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

四、Python练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

五、Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。这份资料也包含在内的哈~在这里插入图片描述

六、Python面试资料

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述
七、资料领取

上述完整版Python全套学习资料已经上传CSDN官方,需要的小伙伴可自行微信扫描下方CSDN官方认证二维码免费领取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值