批量截图(截取正方形图,哪个边短就用哪个边作为标准来截取)
功能是裁取图片中红色框的部分。
代码为:
import sys
from tkinter.tix import Tk
from PIL import Image
import os
import tkinter
# 获取文件夹中所有图片名
def getFileName(filePath):
# file_dir = r"D:\\image123"
file_dir = filePath
i = 1
imageNameList = None
for root, dirs, files in os.walk(file_dir):
# print(i)
i += 1
# print(root) #当前目录路径
# print(dirs) #当前路径下所有子目录
# print(files) #当前路径下所有非目录子文件
imageNameList = files
# print('所有的文件名为:', fileNameList)
return imageNameList
# 裁剪正方形图,哪个边短就用哪个边作为标准来截取
def cutImage(path, imageName):
# img = Image.open("D://image123//1.png")
# print('文件名为:', path + imageName)
img = Image.open(path + imageName)
# 图片的宽度和高度
img_size = img.size
# print("图片宽度和高度分别是{}".format(img_size))
cutSize = img_size[0] if (img_size[0] < img_size[1]) else img_size[1]
if (img_size[0] > img_size[1]): # 宽比高长
startX = (img_size[0] - img_size[1]) / 2 # 计算中间的位置
# 截取中间的位置图片
cropped = img.crop((startX, 0, cutSize + startX, cutSize)) # (left, upper, right, lower)
else: # 高比宽长
startY = (img_size[1] - img_size[0]) / 2 # 计算中间的位置
# 截取中间的位置图片
cropped = img.crop((0, startY, cutSize, cutSize + startY)) # (left, upper, right, lower)
# 判断 D://cut_ok 目录是否存在,不存在则新建
if not os.path.exists('D://cut_ok'):
os.makedirs('D://cut_ok')
# 保存图片
cropped.save("D://cut_ok//" + imageName)
def start(filePath):
print("路径==:", filePath)
allImage = getFileName(filePath)
for fileName in allImage:
print(fileName)
# cutImage("D://image123//", fileName)
cutImage(filePath+"//", fileName)
if __name__ == '__main__':
if hasattr(sys, 'frozen'):
os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']
# 界面****begin
window = Tk()
window.geometry("300x100")
# L1 = tkinter.Label(window, text="文件夹名:")
# L1.pack()
E1 = tkinter.Entry(window, bd=3, )
E1.pack()
# 获取输入框的值:E1.get()
B = tkinter.Button(window, text="开始剪切", command=lambda: start(E1.get()))
B.pack()
L1 = tkinter.Label(window, text="完成的图片在 D://cut_ok")
L1.pack()
# 界面****end
# 进入消息循环
window.mainloop()
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理
想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!