保存图像时文件名不正确

时间:2018-10-12 15:44:52

标签: python

我的脚本有问题,我正在尝试将其另存为Algenblüte.png,但发现我'Algenbl'$'\303\274''te.png'  “ Algenblüte”列表中的单词之一。但是,如果我使用任何其他名称,例如“ Abguss ”,则可以毫无问题地将其保存为Abguss.png。

from PIL import Image, ImageDraw, ImageFont
    import os
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    filepath = 'name.txt'
    fonttype = '/usr/share/fonts/truetype/msttcorefonts/Arial.ttf'
    fntYU = ImageFont.truetype(fonttype, 150)
    i=0
    with open(filepath) as myfile:
        #for data in myfile and i in range(2):
        #for data in myfile:
         for index, data in enumerate(myfile):
             print (data)
             if index == 3:
                break

             if (len(data)) <= 12:
                img = Image.new('RGB', (1000, 1000), color = (255, 255, 255))
                fnt = ImageFont.truetype(fonttype, 550)
                d = ImageDraw.Draw(img)
                d.text((600,700), data, font=fnt, fill=(0, 0, 0))
                img.save(data.replace('\n', '')+".png")

2 个答案:

答案 0 :(得分:0)

文件name.txt的编码可能不同。在调用encode之前,尝试使用utf-8字符串函数将文件名转换为save

答案 1 :(得分:0)

问题起源

您的问题与德语“Ü” 相关联,这不是标准字符串值。 IT会这样编码。

小测试

尝试通常的德语转换并使用algenbluete.png,您应该不会遇到问题。

快速解决方案

此类文件很少,然后手动重命名

我知道这很乏味,但是以我的卑鄙经验,很多python库都讨厌德语,捷克语,法语等特殊字符。

快速而肮脏的解决方案

德语特殊字符的数量受限制[ä, ü, ö, ß]

  1. 使用this code example作为灵感
  2. 建立一个(嵌套的)循环来替换值