免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3586 | 回复: 0
打印 上一主题 下一主题

pil写扭曲中文示例 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-18 20:05 |只看该作者 |倒序浏览
中文,扭曲字体,示例,
windows,PIL 1.1.6, python2.5
要在linux上还不知要装几个模块,
前面的是写中文,后面的是在这基础上扭曲图形,只是利用Image的load(这是1.1.6+版本才支持的),折腾一个cos的函数,有点效果,换成sin差不多。如果还能用另外的函数,不知能折腾出啥样图案来。
#-*-  encoding: utf-8  -*-
import Image
import ImageFont, ImageDraw
chinacha = '世界'
im = Image.new('RGBA',(400,300))
draw = ImageDraw.Draw(im)
font = ImageFont.truetype('msyh.ttf',30)
draw.text((10,25),'world',font=font,fill='rgb(110,0,255)')
draw.text((100,25),chinacha.decode('gb2312'),font=font,fill='rgb(110,0,255)')
# 隶书
font1 = ImageFont.truetype('STLITI.TTF',50)
draw.text((100,100),chinacha.decode('gb2312'),font=font1,fill='green')
#transfomrdata = (1.1,-0.5,0,-0.5,1.3,0,)
#im = im.transform((400,300),Image.AFFINE,transfomrdata)
im.save('e:\piltest2.png')
import math,random
im = Image.open('e:\piltest2.png','r')
newim = Image.new('RGBA',(400,300))
pix = im.load()
newpix = newim.load()
w, h = im.size
#offx = random.randint(5,10) # x方向位移
#offy = 2  #振幅
#angley = random.random() #   recommend: 0 ~ 1,  摆动频率
#测试下来,修改angley效果最佳,可在0~1之间,或者50之类出来的效果都还是有的,
#具体里面的函数关系折腾不出来了,琢磨着和字体大小也有关系
offx = 10
offy = 2
angley = 10
for x in range(0,w):
    for y in range(0,h):
        x1 = int(x -offx + offy * math.cos(angley * y))
        if x1  0:  newpix[x1, y] = pix[x, y]
newim.save('e:\piltest5.png')
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/57278/showart_1422657.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP