python图片批量裁剪

测试中对图片有的地方对大小有要求,有的需要裁剪边缘,花了一点时间做了个图片的批量裁剪,同时也学习了python对文件的简单操作

#coding=utf-8
#
# 测试需要,裁剪图片,使用之前学过的技术
# 做一个裁剪的小案例

import os
#读取path路径下的 jpg文件
def getAllImages(path):
    #f.endswith()  限制文件类型
    #f.endswith('.jpg')|f.endswith('.png')  改成这句可以读取jpg/png格式的文件
    #注意 返回的是绝对路径
   return [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')]

import pylab as plb
import PIL.Image as Image
#循环读图
for path in getAllImages(r'D:\\test'):
    #读图
    img = Image.open(path)
    #显示
    plb.imshow(img)
    #设置裁剪点(4个)
    corner = plb.ginput(4)
    #顺时针取点求解
    left = (corner[0][0] + corner[3][0])/2
    top = (corner[1][1] + corner[0][1])/2
    reight = (corner[1][0] + corner[2][0])/2
    under = (corner[3][1] + corner[2][1])/2
    #print left,top,reight,under
    #box = [left,top,reight,under]
    #box中的数必须是 int 否则会报错
    box = [int(left),int(top),int(reight),int(under)]
    #裁剪
    img2 = img.crop(box)
    #显示裁剪后的效果
    #plb.imshow(img2)
    #plb.show()
    #储存为原来路径覆盖原文件
    img2.save(path)
plb.show()

注意:

1.box中是 int 型 ,不是整形会报错
2.裁剪选点需要顺时针选点,当然也可根据需要自行修改源码
3.f.endswith(‘.jpg’)|f.endswith(‘.png’) 可以读取jpg/png格式的文件
4.getAllImages(path)返回类型为绝对路径

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鼠晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值