用Python批量裁取图,来获取文件夹中所有图片名

批量截图(截取正方形图,哪个边短就用哪个边作为标准来截取)

功能是裁取图片中红色框的部分。

代码为:

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

大家一起来学习讨论吧!

你可能感兴趣的:(用Python批量裁取图,来获取文件夹中所有图片名)