Ejemplo n.º 1
0
def startswitch():
    global font_size,line_spacing,word_spacing,line_spacing_sigma,font_size_sigma,perturb_y_sigma, perturb_x_sigma_show,perturb_theta_sigma
    template = Template(
        background=Image.new(mode="1", size=(2479, 3508), color=1),
        font_size=font_size,
        line_spacing=line_spacing,  # 行间距
        word_spacing=word_spacing,  # 字间距
        line_spacing_sigma=line_spacing_sigma,  # 行间距随机扰动
        word_spacing_sigma=word_spacing_sigma,  # 字间距随机扰动
        font_size_sigma=font_size_sigma,  # 字体大小随机扰动
        perturb_theta_sigma=perturb_theta_sigma,  # 笔画旋转偏移随机扰动
        perturb_x_sigma=perturb_x_sigma,  # 笔画横向偏移随机扰动
        perturb_y_sigma=perturb_y_sigma,  # 笔画纵向偏移随机扰动
        font=ImageFont.truetype(afont),
    )
    if font_size > line_spacing:
        tkinter.messagebox.showwarning(title = "stupid" , message = "字体大小必须小于行间距,你以为?")
    else:
        with open(path, "r", encoding='UTF-8') as f:
            text = f.read()
            images = handwrite(text, template)
            for i, im in enumerate(images):
                assert isinstance(im, Image.Image)
                isExists = os.path.exists("images")
                if not isExists:
                    os.mkdir("images")
                im.show()
                n = random.random()
                im.save("images/{}.jpg".format(n))
        os.system("start explorer images")
Ejemplo n.º 2
0
def function(txt_path,font_path,prefix):
    path_0 = os.path.split(os.path.realpath(__file__))[0]
    path_0 = path.replace("\\", "/") + "/"
    strs = read_txt(txt_path).replace("。"," ").\
        replace(","," ").replace(";"," ").replace(":",":").\
        replace(";"," ").replace("• ","").replace("➢"," ").replace("◼","")
    template = Template(
        background=Image.new(mode="1", size=(9060, 12793), color=1),
        font_size=280,
        font=ImageFont.truetype(font_path),
        line_spacing=385,
        fill=0,  # 字体“颜色”
        left_margin=0,
        top_margin=850,
        right_margin=0,
        bottom_margin=500,
        word_spacing=15,
        line_spacing_sigma=0,  # 行间距随机扰动
        end_chars=",。",  # 防止特定字符因排版算法的自动换行而出现在行首
        font_size_sigma=10,  # 字体大小随机扰动
        word_spacing_sigma=30,  # 字间距随机扰动
    )
    images = handwrite(strs, template)
    for i, im in enumerate(images):
        assert isinstance(im, Image.Image)
        # im.show()
        im.save("cache/{}.png".format(i))
        temp = prefix + "({}).png".format(i + 1)
        blend_two_images(path_0 + "cache/{}.png".format(i), path_0 + "backgrounds/background.png", path_0 + "png_outcome/" + temp)
        reduce_resolution(path_0 + "png_outcome/" + temp,4.152153987167736)
    clear_cache()
Ejemplo n.º 3
0
def transform(file, text, flag, font_size, line_spacing, left_margin,
              top_margin, right_margin, bottom_margin):
    im = Image.open(BytesIO(file))
    if flag:
        im = im.transpose(Image.TRANSPOSE)
    template = Template(
        background=im,
        font_size=font_size,
        font=ImageFont.truetype("image/font/陈静的字.ttf"),
        line_spacing=line_spacing,
        fill=1,  # 字体“颜色”
        left_margin=left_margin,
        top_margin=top_margin,
        right_margin=right_margin,
        bottom_margin=bottom_margin,
        word_spacing=1,
        line_spacing_sigma=3,  # 行间距随机扰动
        font_size_sigma=2,  # 字体大小随机扰动
        word_spacing_sigma=5,  # 字间距随机扰动
        end_chars=",。",  # 防止特定字符因排版算法的自动换行而出现在行首
        perturb_x_sigma=2,  # 笔画横向偏移随机扰动
        perturb_y_sigma=2,  # 笔画纵向偏移随机扰动
        perturb_theta_sigma=0.05,  # 笔画旋转偏移随机扰动
    )
    images = handwrite(text, template)
    image = []
    for i, im in enumerate(images):
        assert isinstance(im, Image.Image)
        # im.show()

        im.save('image/test/{}.jpg'.format(i))
Ejemplo n.º 4
0
def nb(text, size, han):
    template = Template(background=Image.new(mode="1",
                                             size=(1024, 2048),
                                             color=1),
                        font_size=size,
                        font=ImageFont.truetype("中国式手写风字体.ttf"),
                        word_spacing=han)
    images = handwrite(text, template)
    index = int(0)
    for im in images:
        assert isinstance(im, Image.Image)
        strr = "save" + str(index) + ".png"
        im.save(strr, "PNG")
        index = index + 1
Ejemplo n.º 5
0
 def run(self):
     self.signal.emit('开始生成图片\n\n')
     try:
         images = handwrite(self.text, self.template)
         for i, im in enumerate(images):
             assert isinstance(im, Image.Image)
             self.signal.emit('第 %s 张图片生成\n\n' % str(int(i) + 1))
             if self.showImage == True:
                 im.show()
             outputDir = self.outputPath.replace('\\', '/')
             im.save(outputDir + "/{}.webp".replace('//', '/').format(i))
         self.signal.emit('所有图片生成完毕,输出文件夹为:%s\n\n' % outputDir)
     except Exception as e:
         self.signal.emit('出错了,报错信息如下:\n\n')
         self.signal.emit(str(e) + '\n\n')
Ejemplo n.º 6
0
def convert(text, font, path):
    template = Template(
        background=Image.new(mode='1', size=(900, 1000), color=1),
        font_size=96,
        font=ImageFont.truetype(font),
        line_spacing=120,
        fill=0,
        left_margin=100,
        top_margin=100,
        right_margin=100,
        bottom_margin=100,
        word_spacing=12,
        line_spacing_sigma=4,
        font_size_sigma=12,
        word_spacing_sigma=3,
        perturb_x_sigma=4,
        perturb_y_sigma=4,
        perturb_theta_sigma=0.05,
    )
    images = handwrite(text, template)
    for _, im in enumerate(images):
        im.save(path)
Ejemplo n.º 7
0
from PIL import Image, ImageFont

from handright import Template, handwrite

text = "我能吞下玻璃而不伤身体。"
template = Template(
    background=Image.new(mode="1", size=(1024, 2048), color=1),
    font_size=100,
    font=ImageFont.truetype("path/to/my/font.ttf"),
)
for image in handwrite(text, template):
    image.show()
Ejemplo n.º 8
0
from PIL import Image, ImageFont
from handright import Template, handwrite

if __name__ == '__main__':
    size = 120
    with open('text.txt', encoding='utf8') as f:
        text = f.read()
    template = Template(
        background=Image.open(r'bg.png'),
        font_size=size,
        font=ImageFont.truetype(r"hxk2.ttf"),
        line_spacing=int(1.5 * size),
        fill=0,
        left_margin=int(0.5 * size),
        top_margin=int(size * 1.2),
        right_margin=int(0.5 * size),
        bottom_margin=int(size * 1.2),
        word_spacing=0,
        line_spacing_sigma=0.06 * size,
        font_size_sigma=0.05 * size,
        word_spacing_sigma=0.03 * size,
        end_chars=',.?!,。?!、‘“;:',
        perturb_x_sigma=0.02 * size,
        perturb_y_sigma=0.02 * size,
        perturb_theta_sigma=0.0005 * size,
    )
    with Pool() as p:
        images = handwrite(text, template, mapper=p.map)
        for i, im in enumerate(images):
            im.save("output/{}.jpg".format(i))
Ejemplo n.º 9
0
     print("text.txt无内容,请将要手写的内容写入text.txt并保!存!")
     print("请自行关闭退出")
     counter = 1
     while counter <= 10:
         counter = counter + 1
         counter = counter - 1
 else:
     template = Template(
         background=Image.new(mode="1", size=(3000, 4243), color=1),
         font_size=100,
         font=ImageFont.truetype("handwrite.ttf"),
         line_spacing=110,
         fill=0,  # 字体“颜色”
         left_margin=100,
         top_margin=100,
         right_margin=100,
         bottom_margin=100,
         word_spacing=-15,
         line_spacing_sigma=2,  # 行间距随机扰动
         font_size_sigma=2,  # 字体大小随机扰动
         word_spacing_sigma=2,  # 字间距随机扰动
         end_chars=",。.,abcdefghigklmnopqrstuvwxyz",  # 防止特定字符因排版算法的自动换行而出现在行首
         perturb_x_sigma=2,  # 笔画横向偏移随机扰动
         perturb_y_sigma=2,  # 笔画纵向偏移随机扰动
         perturb_theta_sigma=0.05,  # 笔画旋转偏移随机扰动
     )
     images = handwrite(text, template)
     for i, im in enumerate(images):
         assert isinstance(im, Image.Image)
         im.show()
         im.save("{}.png".format(i))
Ejemplo n.º 10
0
        template = Template(
            background=background_temp,
            font=ImageFont.truetype(configuration_dict['font_file_path']),
            fill=ImageColor.getrgb(configuration_dict['font_color']),
            font_size=configuration_dict['font_size'],
            font_size_sigma=configuration_dict['font_size_sigma'],
            perturb_x_sigma=configuration_dict['perturb_x_sigma'],
            perturb_y_sigma=configuration_dict['perturb_y_sigma'],
            perturb_theta_sigma=configuration_dict['perturb_theta_sigma'],
            line_spacing=configuration_dict['line_spacing'],
            line_spacing_sigma=configuration_dict['line_spacing_sigma'],
            word_spacing=configuration_dict['word_spacing'],
            word_spacing_sigma=configuration_dict['word_spacing_sigma'],
            left_margin=configuration_dict['left_margin'],
            top_margin=configuration_dict['top_margin'],
            right_margin=configuration_dict['right_margin'],
            bottom_margin=configuration_dict['bottom_margin'],
            end_chars=configuration_dict['end_chars'])
    else:
        print('Configuration file "' + sys.argv[1] + '" not found!', usage)
        sys.exit()

with Pool() as p:
    images = handwrite(open(text_file_path, mode='r', encoding='utf-8').read(),
                       template,
                       mapper=p.map)

for i, im in enumerate(images):
    assert isinstance(im, Image.Image)
    im.save((output_path + str(uuid.uuid4()) + ".webp").format(i))