Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3224292
  • 博文数量: 269
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1988
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(269)

文章存档

2022年(42)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Python/Ruby

2022-01-20 17:08:35

import io

from PIL import Image

#import numpy as np

import requests

def get_word(ch, quality):

    """获取单个汉字(字符)的图片

    ch          - 单个汉字或英文字母(仅支持大写)

    quality     - 单字分辨率,H-640像素,M-480像素,L-320像素

    """

    fp = io.BytesIO(requests.post(url='', data={'ch': ch}).content)

    im = Image.open(fp)

    w, h = im.size

    if quality == 'M':

        w, h = int(w * 0.75), int(0.75 * h)

    elif quality == 'L':

        w, h = int(w * 0.5), int(0.5 * h)

    return im.resize((w, h))

def get_bg(quality):

    """获取春联背景的图片"""

    return get_word('bg', quality)

def write_couplets(text, HorV='V', quality='L', out_file=None):

    """生成春联

    text        - 春联内容,以空格断行

    HorV        - H-横排,V-竖排

    quality     - 单字分辨率,H-640像素,M-480像素,L-320像素

    out_file    - 输出文件名

    """

    usize = {'H': (640, 23), 'M': (480, 18), 'L': (320, 12)}

    bg_im = get_bg(quality)

    text_list = [list(item) for item in text.split()]

    rows = len(text_list)

    cols = max([len(item) for item in text_list])

    if HorV == 'V':

        ow, oh = 40 + rows * usize[quality][0] + (rows - 1) * 10, 40 + cols * usize[quality][0]

    else:

        ow, oh = 40 + cols * usize[quality][0], 40 + rows * usize[quality][0] + (rows - 1) * 10

    out_im = Image.new('RGBA', (ow, oh), '#f0f0f0')

    for row in range(rows):

        if HorV == 'V':

            row_im = Image.new('RGBA', (usize[quality][0], cols * usize[quality][0]), 'white')

            offset = (ow - (usize[quality][0] + 10) * (row + 1) - 10, 20)

        else:

            row_im = Image.new('RGBA', (cols * usize[quality][0], usize[quality][0]), 'white')

            offset =外汇跟单gendan5.com (20, 20 + (usize[quality][0] + 10) * row)

        for col, ch in enumerate(text_list[row]):

            if HorV == 'V':

                pos = (0, col * usize[quality][0])

            else:

                pos = (col * usize[quality][0], 0)

            ch_im = get_word(ch, quality)

            row_im.paste(bg_im, pos)

            row_im.paste(ch_im, (pos[0] + usize[quality][1], pos[1] + usize[quality][1]), mask=ch_im)

        out_im.paste(row_im, offset)

    if out_file:

        out_im.convert('RGB').save(out_file)

    out_im.show()

text = '思前想后几行代码筑万载春秋 扶内保外一千精英带五千干将' #对联内容

write_couplets(text, HorV='V', quality='M', out_file='春联.jpg') #生成普天同庆.jpg对联图片

阅读(209) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~