本文旨在介绍基于Python如何批量裁剪图片并保存,主要内容包括以下几个方面:
裁剪图片的原理与方法、Python中用于裁剪图片的库、代码实现过程以及批量裁剪图片的实际案例等。
一、裁剪图片的原理与方法
图片裁剪是指将一张图片中的某一部分选中并保存,通常用于将图片缩小或者只选取图片中的部分内容。
具体来看,图片裁剪的过程大致包括以下几个步骤:
- 选定裁剪区域。
需要确定需要裁剪的区域,以一定的方式选定区域的位置和大小。
- 选定裁剪方式。
需要确定使用何种方式对图片进行裁剪,例如按照比例缩放、按照像素大小裁剪、按照像素位置裁剪等。
- 裁剪图片并保存。
使用选定的裁剪方式对图片进行裁剪,并将裁剪后的图片保存到指定的位置。
针对以上步骤,Python中有许多用于裁剪图片的库可以使用,下面将分别介绍。
二、Python中用于裁剪图片的库
- 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()方法展示裁剪后的图片。
- 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模块进行图片裁剪操作。
具体实现步骤如下:
- 导入Pillow库中的Image模块
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")
完整的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”的文件中。
四、批量裁剪图片案例
批量裁剪图片是指同时对指定路径下所有图片进行裁剪操作。
具体实现过程与单张图片裁剪相似,只需要在代码中对指定路径下的所有图片进行循环即可。
下面是一个这样的实际案例:
需求:批量将指定文件夹下所有图片的左上角裁剪为正方形并保存。
- 确定裁剪区域
裁剪的区域为左上角正方形,大小为图片中宽度和高度中小的那个值。
def get_rect(image):
width, height = image.size
size = min(width, height)
rect = (0, 0, size, size)
return rect
以上代码中,get_rect()函数接收一张PIL格式的图片作为参数,获取该图片的宽度和高度,并计算出左上角正方形的大小。
最后将左上角正方形的坐标和大小封装成一个元组并返回。
- 批量裁剪图片并保存
对所有图片进行循环裁剪,并将裁剪后的图片保存在指定路径下。
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官方认证二维码免费领取