(图书介绍:童晶:《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坐标增加

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

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

  1. 第10章 随机山水画(《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将绘制随机山水画,如图所示.首先学习HSB颜色模型,并实现天空颜色渐变的效果:接着利用柏林噪声,实现云朵和山脉的绘制:然后 ...

  2. 第15章 音乐可视化(《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 15 音乐可视化 本章我们将实现音乐可视化的效果,如图所示.首先学习Minim库的下载配置,并利用Minim库播放音乐文件.绘制音 ...

  3. 第13章 图像像素采样(《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将实现图像像素采样的绘制效果,如图所示.首先学习图像文件的读取与显示,获取像素颜色:然后生成马赛克效果,并实现随机采样画圆 ...

  4. 第12章 粒子同心圆(《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将实现粒子同心圆,如图所示.首先学习面向对象编程的知识,为粒子类添加成员变量与成员函数:然后实现一个面向对象版本的运动粒子 ...

  5. 第11章 递归分形树(《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将绘制递归分形树,如图所示.首先学习递归的概念,并学习if-elif-else语句:接着学习分形的概念,并利用递归调用绘制 ...

  6. 第9章 互相作用的圆球 (《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将实现互相作用的圆球,如图所示.首先实现多个随机的圆球,为圆球之间增加作用力,使其均匀分布到一个大圆内:然后实现鼠标交互, ...

  7. 第8章 随风飘动的粒子 (《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将实现随风飘动的粒子,如图所示.首先绘制逐渐消失的轨迹,实现随机运动的圆点:然后学习列表的概念,利用列表实现多个运动粒子: ...

  8. 第5章 简易毛笔字(《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将实现简易毛笔字程序,读者可以按下鼠标按键移动,在程序窗口写出毛笔字的效果,如图所示. 5 简易毛笔字 首先学习鼠标的交互 ...

  9. opencv python 生成画布_第16章 坚持一百秒(《Python趣味创意编程》教学视频)

    (图书介绍:童晶:<Python趣味创意编程>新书预告) 本章我们将实现坚持一百秒的游戏,玩家通过移动人脸控制飞碟躲避越来越多的反弹子弹,效果如图所示.首先利用面向对象的知识,实现了一个鼠 ...

最新文章

  1. Nginx服务启动脚本
  2. copper实现图片的裁剪和上传(1)
  3. pandas替换列值
  4. 使用Azure Serverless来开发Teams App
  5. JetBrains 开发者调查 - 编程语言趋势
  6. linux的自定义input,linux键值到Android键值的转换与自定义
  7. python 案例串接_Python基础系例--字典串操作
  8. 太原市初中计算机课程视频,初中全课程教学视频
  9. Oracle 自定义函数、存储过程
  10. 电脑软件从通过运行开启(耍帅必会)
  11. java获取文本文件的编码格式
  12. bitbake 编译错误集
  13. Golang Hotfix技术背景
  14. 用户名第一个字符设置为默认头像
  15. 2016 CCPC东北赛区 简单三少(proA+proC+proE)
  16. 常用 Linux 软件汇总!很全,但不敢说最全
  17. java远控_利用Java实现远程控制
  18. 中小学计算机说课稿,【附说课相关知识】中小学信息技术说课稿《认识计算机》.doc...
  19. 机器视觉:热成像相机选择的五大因素
  20. CentOS7安装Oracle11g时84%出错,求大佬解答

热门文章

  1. 自动驾驶——SimpleNet的学习笔记
  2. PyTorch——torch.Tensor与np.ndarray(NumPy)之间的类型转换
  3. C++中如何判断文件是否存在
  4. R语言使用strsplit函数遇到non-character argument怎么解决
  5. 如何在markdown(csdn)中打出某个字符上面的三角帽子符号
  6. Altium AD20开槽处铺铜出现大面积空白区域的解决方法
  7. python中threading模块中的Join类
  8. javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据...
  9. Linux 环境下 Git 安装与基本配置
  10. mysqlbackup 重建带有gtid特性的slave