吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5200|回复: 100
收起左侧

[原创工具] 图片自动裁剪尺寸exe(电商可用)

  [复制链接]
renminwansui 发表于 2025-3-18 17:19
因为自己朋友做电商,让我给他做了一个自动批量选择图片裁剪成800*800(正方形,不足800的以实际尺寸为准,超过的只裁剪中心点开始的800*800)尺寸的工具

用起来很快,hhhh

现在将成品exe和py代码分享给大家

能够帮到大家我很高兴

图片展示:
1. 选择图片(可以批量选中)


2.选择输入文件夹

3.生成预览(会自动生成文件夹)


exe成品下载:https://ljk.lanzouu.com/iYols2qxysnc 密码:52pj


[Python] 纯文本查看 复制代码
from PIL import Image
import tkinter as tk
from tkinter import filedialog
import os
from datetime import datetime

def crop_images():
    # 创建一个隐藏的 Tkinter 窗口
    root = tk.Tk()
    root.withdraw()

    # 弹出文件选择对话框,允许选择多个图片文件
    file_paths = filedialog.askopenfilenames(filetypes=[("Image files", "*.png;*.jpg;*.jpeg")])

    if file_paths:
        # 弹出文件夹选择对话框,让用户选择保存裁剪后图片的根文件夹
        output_root_folder = filedialog.askdirectory()

        if output_root_folder:
            # 获取当前时间并格式化
            current_time = datetime.now().strftime("%Y%m%d%H%M%S")
            # 生成新文件夹名称
            new_folder_name = f"{current_time}ki裁剪800"
            # 拼接新文件夹的完整路径
            new_folder_path = os.path.join(output_root_folder, new_folder_name)

            # 创建新文件夹
            if not os.path.exists(new_folder_path):
                os.makedirs(new_folder_path)

            for file_path in file_paths:
                try:
                    # 打开图片
                    image = Image.open(file_path)
                    width, height = image.size

                    # 确定裁剪尺寸
                    if width < 800 or height < 800:
                        crop_size = min(width, height)
                    else:
                        crop_size = 800

                    # 计算裁剪的坐标
                    left = (width - crop_size) // 2
                    top = (height - crop_size) // 2
                    right = left + crop_size
                    bottom = top + crop_size

                    # 裁剪图片
                    cropped_image = image.crop((left, top, right, bottom))

                    # 生成保存路径
                    file_name = file_path.split("/")[-1]
                    output_name = file_name.rsplit('.', 1)[0] + '_cropped.' + file_name.rsplit('.', 1)[1]
                    output_path = os.path.join(new_folder_path, output_name)

                    # 保存裁剪后的图片
                    cropped_image.save(output_path)
                    print(f"裁剪并保存图片: {output_path}")
                except Exception as e:
                    print(f"处理图片 {file_path} 时出错: {e}")

if __name__ == "__main__":
    crop_images()

免费评分

参与人数 15吾爱币 +15 热心值 +14 收起 理由
htx202502 + 1 + 1 我很赞同!
flydyf + 1 谢谢@Thanks!
Taurus1 + 1 + 1 谢谢@Thanks!
freedom0104 + 1 + 1 谢谢@Thanks!
ly19810529 + 1 + 1 谢谢@Thanks!
kyokusanagi2000 + 1 + 1 热心回复!
viconly + 1 + 1 谢谢@Thanks!
xcaoyi520 + 1 + 1 我很赞同!
枯木逢春犹再发 + 1 + 1 我很赞同!
Y3r89p + 1 + 1 谢谢@Thanks!
xiaokanliunian + 1 + 1 谢谢@Thanks!
truebaby + 1 + 1 谢谢@Thanks!
cncyy + 1 + 1 谢谢@Thanks!
lyj722 + 1 + 1 谢谢@Thanks!
lbbxx3123 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ph0215 发表于 2025-4-8 23:01
本帖最后由 ph0215 于 2025-4-8 23:03 编辑

用dp改一下,做个ui界面,加个日志框,第一个按钮,弹窗的打开文件,改为选取文件夹自动扫描文件夹内的图片(不包含子文件夹),第二个按钮,改为输出目录。第三个预览取消,做一张图用不上5秒。做出来就知道效果了。然后处理文件顺序,给个定义按照a-z,1-9,的顺序排列处理文件。加一个开始按钮,点击开始后启动新的线程处理,避免界面卡死。使用ff管道开启多线程处理,全程使用的总线程数以界面填写的数字为准。每次关闭软件要保存当前软件的设置,这样方便下一次打开直接使用。输出增加多种格式如png、gif等放在ui界面上方便用户选择。所有代码内容以界面选择填写为准。还有导出目标比例,让用户自己填写,以中心点为准。其他逻辑不变。
小呆伟 发表于 2025-3-23 21:58
anning666 发表于 2025-3-18 17:24
jfy168 发表于 2025-3-18 17:31
自己动手,丰衣足食。想你学习。
hw728 发表于 2025-3-18 17:42
有图有源码,复制学习了
12394613643 发表于 2025-3-18 17:44
好东西学习一下,谢了
zjfy66888 发表于 2025-3-18 17:52

好东西学习一下,赞
panda15680 发表于 2025-3-18 17:59
好东西学习一下,赞
as19880115 发表于 2025-3-18 18:05
有源代码的最好了,可以根据实际情况自己改改,谢谢
William5081 发表于 2025-3-18 18:06
学习一下~
tjy0916 发表于 2025-3-18 18:12
感觉是Ai软件,尝试一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-30 15:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表