首页 > 编程语言 > 详细

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

时间:2020-12-15 15:20:07      阅读:35      评论:0      收藏:0      [点我收藏+]

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

技术分享图片
功能是裁取图片中红色框的部分。
代码为:

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批量裁取图,来获取文件夹中所有图片名

原文:https://www.cnblogs.com/putao11111/p/14137980.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!