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

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

本文介绍如何利用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 相关产品和应用

全部下载

专题列表