【问题标题】:How to save multiple files in Python?如何在 Python 中保存多个文件?
【发布时间】:2020-03-16 15:28:30
【问题描述】:

所以,我写了这个脚本,它接受命令行参数并基于它们生成图像(现在只有一个参数),它工作得很好,直到它到达保存功能,我不知道为什么但它只取最后一张图片并保存 10 次,而不是保存每张图片

这里是代码;

import os, argparse
from PIL import Image as image
from PIL import ImageDraw as image_draw
from PIL import ImageFont as image_font

parser = argparse.ArgumentParser(description='Image generator')

#Argument definition

parser.add_argument('-num', action='store_true', required=False, help='Generates numbers')

numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

args = parser.parse_args()

arg_num = args.num

def img_gen(n, lenght):
    text = n

    fnts = 20

    fnt = image_font.truetype('Roboto.ttf', size=fnts, index=0, encoding='', layout_engine=None)
    gen_i_width = (6 * fnts)
    gen_i_height = (3 * fnts)

    gen_img = image.new('RGBA', (gen_i_width, gen_i_height), color=(0, 0, 0, 255))

    gen_text = image_draw.Draw(gen_img)
    gen_text.text((0,0), text, font=fnt, fill=(255, 255, 255, 255))
    text_size = gen_text.textsize(text, font=fnt, spacing=0, direction=None, features=None)

    text_s_list = list(text_size)
    text_width, text_height = text_s_list

    img_c = gen_img.crop((0, 0, text_width, text_height))

    for file_name in range(1, lenght + 1):
        img_c.save(f"{file_name:04d}.png")

def main():
    if arg_num == True:
        lenght = len(numbers)
        for n in numbers:
            img_gen(n, lenght)

if __name__ == '__main__':
    main()

【问题讨论】:

    标签: python python-3.x image save auto-generate


    【解决方案1】:

    我为一些工作做了类似的事情

    for i in list:
         #GRAPH
         plt.savefig("path/{0}/{1}.pdf".format(i,i));
    

    这是保存到名为“i”的文件夹中,文件名为“i.pdf”

    当您有以下情况时:

    '{0}_{1}'.format('apple','juice')
    

    输出是

    'apple_juice'
    

    【讨论】:

      【解决方案2】:

      每次创建图像时,您都会将其保存到多个文件中,并使用序列号作为名称。这每次都会覆盖所有文件中的前一个图像。

      img_gen 函数中删除循环。相反,保存到一个文件,其名称由n 生成。然后将每张图片保存到一个文件中,文件名就是图片编号。

      所以,改变

      for file_name in range(1, lenght + 1):
          img_c.save(f"{file_name:04d}.png")
      

      ...到...

      fnum = int(n)
      img_c.save(f"{fnum:04d}.png")
      

      【讨论】:

      • 我想我基本上明白你的意思,但我是 python 新手,所以你能告诉我具体需要改变什么吗?
      • 好吧,这会引发这个错误; ValueError:“str”类型的对象的未知格式代码“d”
      猜你喜欢
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 2020-07-23
      • 2013-02-19
      • 2021-05-18
      • 1970-01-01
      相关资源
      最近更新 更多