求批量自定义修改图片像素软件win版本的

查看 54|回复 4
作者:byteka   
像看图王那样能设置
修改图片尺寸:
1080宽像素
360高像素
.但是能批量修改几百张几千张的那种。

批量, 像素

chanmao   

楼主能否详细描述一下要求,尤其是是否锁定长宽比这种?
我可以用Python帮楼主写一个,批量修改程序所在文件夹中所有图片的分辨率
hwd1069   


hwd1069 发表于 2023-10-26 08:59
您好,图片锁定长宽比,修改像素大小,老师帮忙给一个能批量修改图片像素的分辨率的程序,谢谢email:

我在GitHub找了一下,修改图片的程序大多数指定长宽,不能锁定长宽比,并且是拿GO写的,不会GO语言,所以没尝试改别人的,自己写了一个:
如果楼主知道如何运行python代码可以直接运行;如果不知道请回复我,帮你打包成exe文件
程序只经过简单测试,可能会出现bug,如果有任何bug都可以找我帮你改
如果不放心请先备份修改前的图片(不过如果作死把修改前和修改后的地址写成同一个应该问题不大)
如果楼主不会用命令行,也可回帖我尝试教会楼主或者改成图形界面
[Python] 纯文本查看 复制代码
import argparse
import os
from PIL import Image
def cli():
    parser = argparse.ArgumentParser(
        prog="ImageResizer", description="批量修改图片长宽比")
    parser.add_argument("-S", "--source", type=str,
                        required=True, help="需要转换的文件所在文件夹")
    parser.add_argument("-D", "--dest", type=str,
                        required=True, help="转换结果保存文件夹; 请不要与源文件夹相同")
    parser.add_argument("-W", "--width", type=int, default=-
                        1, help="转换后图片的宽度(非必须)")
    parser.add_argument("-H", "--height", type=int, default=-
                        1, help="转换后图片的高度(非必须); 若指定长、宽中某一项,则另一项跟据原图长宽比自动计算\r\n\t; 若两项都为空,则不改变图片大小")
   
    parser.set_defaults(handle=ImageResizer)
    args = parser.parse_args()
    if hasattr(args, 'handle'):
        args.handle(args)
    else:
        parser.print_help()
def ImageResizer(args):
    source = args.source
    dest = args.dest
    width = args.width
    height = args.height
    for (root, dirs, files) in os.walk(source):
        for file in files:
            file_name = os.path.join(root, file)
            image = None
            try:
                image = Image.open(file_name)
            except:
                continue
            (now_w, now_h) = image.size
            target_w = width
            target_h = height
            if (target_w == -1 and target_h == -1):
                target_h = now_h
                target_w = now_w
            elif (target_w == -1):
                target_w = now_w * target_h // now_h
            elif (target_h == -1):
                target_h = now_h * target_w // now_w
            new_size = (target_w, target_h)
            new_image = image.resize(new_size)
            new_image.save(os.path.join(dest, file))
    print("done")
if __name__ == '__main__':
    cli()
chanmao   

老师你好,帮我打包成exe文件吧,谢谢。
hwd1069   


chanmao 发表于 2023-10-23 19:12
楼主能否详细描述一下要求,尤其是是否锁定长宽比这种?
我可以用Python帮楼主写一个,批量修改程序所在文 ...

能批量修改图片尺寸和图片名字吗 指定的尺寸名字
您需要登录后才可以回帖 登录 | 立即注册

返回顶部