admin管理员组

文章数量:1794759

第14章 定制字符画(《Python趣味创意编程》教学视频)

第14章 定制字符画(《Python趣味创意编程》教学视频)

(图书介绍:童晶:《Python趣味创意编程》新书预告)

本章我们将实现定制字符画的效果,如图所示。首先对图片均匀采样、显示字符;然后对字符串的元素进行遍历,实现一段文字的替换显示;最后根据字体大小调整采样位置,并添加一定的随机性。

14 定制字符画

视频教程:

最终代码:

def setup(): global img,string # 全局变量 img = loadImage("image2.jpg") # 导入图片文件 size(500, 500) # 画面大小 myFont=createFont("simsun.ttc",13) # 导入宋体,设置字体大小 textFont(myFont) # 设置文字字体 textAlign(CENTER) # 文字居中对齐 string = u"Python创意编程真有趣 " # 要显示的字符串 def draw(): background(255) # 白色背景 stringId = 0 # string中要显示的字符序号 step = int(map(mouseX,0,width,5,20)) # 鼠标左右位置设置文字大小 space = map(mouseY,0,height,0,step/2)#鼠标上下位置设置文字行间距离 y = 0 # y坐标从0开始 while y<=height: # 当y坐标不超过height时循环 x = space*noise(100+0.1*y) # 每一行x坐标从随机位置开始 while x<=width: # 当x坐标不超过width时循环 yNoise = noise(0.1*x,0.1*y)*space*2 # y坐标加一些随机扰动 c = img.get(int(x), int(y+yNoise)) # 获得这个采样点的颜色 fill(c) # 设置文字颜色 bright = brightness(c) # 当前像素的亮度值 ts = map(bright, 0,255,step*1.5,step*0.5) # 越暗文字越大 textSize(ts) # 设置文字大小 letter = string[stringId] # 取对应序号的文字 text(letter, x, y+yNoise) # 在对应位置上显示文字 stringId += 1 # 对应字符序号加1 if stringId > len(string)-1: # 字符序号超出范围 stringId = 0 # 重新设为0 # 每次字符串结束后空随机大小 x += 2*space*noise(100+0.1*x,100+0.1*y) # x坐标向右,跨过文字宽度,有一定随机性 x += textWidth(letter) + 0.5*space*noise(0.1*x,0.1*y) y += step + space # 一行处理好后,y坐标增加

这一章主要学习了字符串元素的遍历、文字大小的设置,利用这些知识实现了定制字符画。除了利用字符,读者也可以尝试把一些小图片作为绘制基本元素,来逼近另一张图片的显示效果。

 

本文标签: 创意趣味字符视频Python