python批量生成图片输出到_Python批量生成特定尺寸图片及图画任意文字

因为工作需要生成各种大小的图片,所以写了个小脚本,顺便支持了下图画文字内容。具体代码如下:

from PIL import Image, ImageDraw, ImageFont

'''

Auth: Xiaowu Chen

Note: Please install [pillow] library before run this script.

'''

def draw_image(new_img, text, show_image=False):

text = str(text)

draw = ImageDraw.Draw(new_img)

img_size = new_img.size

draw.line((0, 0) + img_size, fill=128)

draw.line((0, img_size[1], img_size[0], 0), fill=128)

font_size = 40

fnt = ImageFont.truetype('arial.ttf', font_size)

fnt_size = fnt.getsize(text)

while fnt_size[0] > img_size[0] or fnt_size[0] > img_size[0]:

font_size -= 5

fnt = ImageFont.truetype('arial.ttf', font_size)

fnt_size = fnt.getsize(text)

x = (img_size[0] - fnt_size[0]) / 2

y = (img_size[1] - fnt_size[1]) / 2

draw.text((x, y), text, font=fnt, fill=(255, 0, 0))

if show_image:

new_img.show()

del draw

def new_image(width, height, text='default', color=(100, 100, 100, 255), show_image=False):

new_img = Image.new('RGBA', (int(width), int(height)), color)

draw_image(new_img, text, show_image)

new_img.save(r'%s_%s_%s.png' % (width, height, text))

del new_img

def new_image_with_file(fn):

with open(fn, encoding='utf-8') as f:

for l in f:

l = l.strip()

if l:

ls = l.split(',')

if '#' == l[0] or len(ls) < 2:

continue

new_image(*ls)

if '__main__' == __name__:

new_image(400, 300, 'hello world any size', show_image=True)

# new_image_with_file('image_data.txt')

如果你需要批量的话,批量数据文件的格式如下:

#width,height,text

200,200,hello

300,255,world

执行后的效果如下:

想学习更多Python知识,请扫描如下二维码!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值