本文旨在介绍基于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激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】