Python使用PIL实现图片批量旋转、缩放与裁剪

纸上星河
纸上星河
发布时间:2026-10-11| 3人浏览过
原创

本文介绍如何利用Python的PIL库对指定目录下的图片进行批量处理,包括旋转90度、调整尺寸以及按坐标裁剪。通过遍历文件并调用Image模块的方法,实现自动化图片格式转换与尺寸统一,适用于需要批量处理大量图像文件的场景。

环境准备与依赖

实现图片处理功能需要安装Python环境及PIL库(Pillow)。代码中使用了Image模块来打开、处理并保存图像文件。确保目标目录下存在符合命名规则的图片文件(如1.jpg至23.jpg),并准备好输入与输出目录路径。

图片旋转处理

旋转操作主要用于调整图片的方向。以下代码演示了如何将图片逆时针旋转90度,并保存到新路径。处理逻辑包括打开图像、获取原始尺寸、执行旋转操作以及保存结果。

# -*-coding:utf-8-*-
from PIL import Image
def rotateimg(inputimg,outimg):
  im = Image.open(inputimg)
  # 图片的宽度和高度
  img_size = im.size
  print("图片宽度和高度分别是{}".format(img_size))
  # 旋转图片
  # 左旋转90度
  im = im.rotate(90)
  print("图片宽度和高度分别是{}".format(im.size))
  im.save(outimg)
if __name__ == "__main__":
  #
  inputpath = "D:/test/tmp/shuibiao/"
  outpath = "D:/test/tmp/img/"
  for i in range(1,24):
    tmpin = inputpath+str(i)+'.jpg'
    tmpout = outpath+str(i)+'.jpg'
    rotateimg(tmpin, tmpout)
    print('成功旋转第'+str(i)+'张图片')

图片缩放处理

缩放功能用于统一图片尺寸。代码中指定了目标尺寸为宽260像素、高180像素,并使用Image.ANTIALIAS参数以保证缩放后的图像质量。遍历指定目录下的图片,依次执行缩放并保存。

# -*-coding:utf-8-*-
from PIL import Image
def resizeimg(inputimg,outimg):
  img1 = Image.open(inputimg)
  out=img1.resize((260, 180),Image.ANTIALIAS)
  print("图片宽度和高度分别是{}".format(out.size))
  out.save(outimg)
if __name__ == "__main__":
  #
  inputpath = "D:/test/tmp/img/"
  outpath = "D:/test/tmp/img_1/"
  for i in range(1, 24):
    tmpin = inputpath + str(i) + '.jpg'
    tmpout = outpath + str(i) + '.jpg'
    resizeimg(tmpin, tmpout)
    print('成功放缩第' + str(i) + '张图片')

图片裁剪处理

裁剪操作允许从原图中截取特定区域。通过定义左上角坐标(x, y)以及裁剪框的宽高w, h,计算右下角坐标并执行crop方法。示例中截取了宽260、高60的区域,起始位置为(0, 60)。

# -*-coding:utf-8-*-
from PIL import Image
def cropimg(inputimg,outimg):
  im = Image.open(inputimg)
  # 图片的宽度和高度
  img_size = im.size
  print("图片宽度和高度分别是{}".format(img_size))
  '''
  裁剪:传入一个元组作为参数
  元组里的元素分别是:(距离图片左边界距离x, 距离图片上边界距离y,距离图片左边界距离+裁剪框宽度x+w,距离图片上边界距离+裁剪框高度y+h)
  '''
  # 截取图片中一块宽和高都是250的
  x = 0
  y = 60
  w = 260
  h = 60
  region = im.crop((x, y, x + w, y + h))
  region.save(outimg)

if __name__ == "__main__":
  inputpath = "D:/test/tmp/img_1/"
  outpath = "D:/test/tmp/img_2/"
  for i in range(1, 24):
    tmpin = inputpath + str(i) + '.jpg'
    tmpout = outpath + str(i) + '.jpg'
    cropimg(tmpin, tmpout)
    print('成功裁剪第' + str(i) + '张图片')

总结

通过上述三个示例,展示了如何使用Python的PIL库完成图片的旋转、缩放和裁剪。这些操作可以组合使用,以满足不同的图像处理需求。在实际应用中,请根据实际文件路径和图像规格调整代码中的参数。

以上就是Python实现对图片进行旋转,放缩,裁剪的功能的详细内容,更多关于Python图片处理、PIL库使用技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。