python文字转为图片

一、文字横向排列

#文字横向排列
import os
from io import BytesIO
from PIL import Image, ImageFont, ImageDraw
import pygame
import random

pygame.init()
font = pygame.font.Font(os.path.join("fonts", "全新硬笔楷书简.ttf"),22)   # 从一个字体文件创建一个 Font 对象 同时定义字体大小
#font.set_bold(True)    #加粗
#font.set_italic(True)  #斜体

with open("G:\\数据集\\文字图片\\2.txt", "r",encoding='utf-8') as f:  # 打开文件
    data_str = f.read()  # 读取文件
    data = list(data_str)
len_file=len(data)
num_words=12              #每张图片的文字数量
loop_n=int(len_file/num_words)
num_p=607               #图片标号
for i in range(loop_n):
    text_list=data[i*num_words:i*num_words+num_words]
    text= "".join(text_list)
    j=random.randint(0,255)
    k=random.randint(0,255)
    g=random.randint(0,255)
    s=random.randint(0,255)
    rtext = font.render(text, True, (0,0,0), (255,255,255))          #文字颜色与背景颜色
    num_p=num_p+1
    path1="G:\\数据集\\文字图片1\\"+str(num_p)+".jpg"
    pygame.image.save(rtext, path1)
    

二、文字纵向排列

#文字竖向排列
# -*- coding: utf-8 -*-
from PIL import Image,ImageFont,ImageDraw
import os

with open("G:\\数据集\\文字图片\\2.txt", "r",encoding='utf-8') as f:  # 打开文件
    data_str = f.read()  # 读取文件
    data = list(data_str)
len_file=len(data)
num_words=3            #每张图片的文字数量
loop_n=int(len_file/num_words)


num=488             #图片标号
size_m=22               #字体大小



for i in range(loop_n):
    t1=data[i*num_words]
    t2=data[i*num_words+1]
    t3=data[i*num_words+2]
    #t4=data[i*num_words+3]
    #t5=data[i*num_words+4]
    #t6=data[i*num_words+5]
    #t7=data[i*num_words+6]
    #t8=data[i*num_words+7]
    #t9=data[i*num_words+8]
    #t10=data[i*num_words+9] 
    
    #j=random.randint(0,255)
    #k=random.randint(0,255)
    #g=random.randint(0,255)

    jj=random.randint(0,255)
    kk=random.randint(0,255)
    ss=random.randint(0,255)
    
    #jj=255
    #kk=255
    ss=255
    
    j=0
    k=0
    g=0
    
    im = Image.new("RGB", (size_m, size_m*3), (kk,ss,jj))      #注意根据字体修改图片长度 size_m*4
    dr = ImageDraw.Draw(im)  
    font = ImageFont.truetype(os.path.join("fonts", "s1.ttf"), size_m-2)
    dr.text((2,2), t1, font=font, fill=(j,k,g))   
    #dr.text((2,size_m*1.2),t2, font=font, fill=(j,k,g))  
    #dr.text((2,size_m*2.4),t3, font=font, fill=(j,k,g))  
    #dr.text((2,size_m*3.6),t4, font=font, fill=(j,k,g))  
    #dr.text((2,size_m*4.8),t5, font=font, fill=(j,k,g))  
    dr.text((2,size_m*1),t2, font=font, fill=(j,k,g))  
    dr.text((2,size_m*2),t3, font=font, fill=(j,k,g))  
    #dr.text((2,size_m*3),t4, font=font, fill=(j,k,g))  
    #dr.text((2,size_m*4),t5, font=font, fill=(j,k,g))  
    #dr.text((2,size_m*5),t6, font=font, fill=(j,k,g))  
    #dr.text((2,size_m*6),t7, font=font, fill=(j,k,g)) 
    #dr.text((2,size_m*7),t8, font=font, fill=(j,k,g))  
    #dr.text((2,size_m*8),t9, font=font, fill=(j,k,g)) 
    #dr.text((2,size_m*9),t10, font=font, fill=(j,k,g))
    num=num+1
    im.save("G:\\数据集\\文字图片\\"+str(num)+".jpg")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值