首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -使用PIL库生成文本

Python -使用PIL库生成文本
EN

Stack Overflow用户
提问于 2018-08-05 12:44:46
回答 1查看 904关注 0票数 2

我希望根据给定的方向(左或右倾斜)控制文本的倾斜(斜体),类似于下面的图像:

我偶然发现了一个很好的答案:How does perspective transformation work in PIL?,播放了代码,阅读了AFFINE的文档,但对我来说还不够清楚。

有人能解释一下我(数学和逻辑上的智慧)吗?我该怎么做?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-08-06 06:02:33

为了生成一些文本,我们可以使用任何方法,这里我使用ImageFont获得一个黑白掩码。

代码语言:javascript
复制
def generate_text(text):
    fnt = ImageFont.truetype('arial.ttf', 72)
    img = Image.new('1', fnt.getsize(text))
    mask = [x for x in fnt.getmask(text, mode='1')]
    img.putdata(mask)
    img = img.convert('RGB')
    return img

然后,我想在左边和右边添加填充,因为我们将水平剪切文本。

代码语言:javascript
复制
def add_border(img, width):
    new = Image.new('RGB', (img.width + 2 * width, img.height), (0, 0, 0))
    new.paste(img, (width, 0))
    return new

最后,我将使用b值进行仿射变换,如果您看一下公式,y系数将被添加到x中。因此,一个较大的b将水平剪切更多。在这种情况下,我使用的是2

代码语言:javascript
复制
def shear(img, shear):
    shear = img.transform(img.size, Image.AFFINE, (1, shear, 0, 0, 1, 0))
    return shear

呼叫代码:

代码语言:javascript
复制
img = generate_text('test')
img = add_border(img, 200)
img = shear(img, 2)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51694433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档