1.骰子作画

在看到阮一峰的网络日志中《骰子作画的算法》时,不经对其产生了浓厚的兴趣,联想到之前浏览到的程序员个性代码注释,发现里面很多的注释都可以用骰子作画的代码实现输出,于是自己用Python写了一份代码。

2.代码实现

翠花儿,上代码:

from PIL import Imageif __name__ == '__main__':img = Image.open("demo.jpg") # 本地图片路径img_array = img.load() # 加载图片x = 5  # 横面像素大小y = 10  # 纵面像素大小for j in range(int(img.height / y)):for k in range(int(img.width / x)):a = 0for l in range(x):for m in range(y):a = (img_array[x * k + l, y * j + m][0] +img_array[x * k + l, y * j + m][1] +img_array[x * k + l, y * j + m][2]) / 3 + aa = a / (x * y)  # 计算单位面积内平均像素灰度# 根据像素灰度输出字符,灰度越大,字符越简单(偏白色)if 0 < a <= 32:print("@", end="")elif 32 < a <= 64:print("#", end="")elif 64 < a <= 96:print("$", end="")elif 96 < a <= 128:print("*", end="")elif 128 < a <= 160:print("+", end="")elif 160 < a <= 192:print("^", end="")elif 192 < a <= 224:print("'", end="")elif 224 < a <= 255:print(".", end="")print("")

Python 版本为3.7,需要引入的包为PIL.Image,其中"demo.jpg"为本地图片,我用的图片为:

demo.jpg

3.实现结果

《骰子作画的算法》文中描述到“如果区域划分得越小,模拟图的生成效果就越好。”

《骰子作画的算法》文中描述

当像素矩阵为[5,10]时,即:

    x = 5  # 横面像素大小y = 10  # 纵面像素大小

效果图如图:

总体效果图

局部效果

当像素矩阵为[1,2]时,即:

    x = 1  # 横面像素大小y = 2  # 纵面像素大小

效果图如图:

总体效果图

局部效果图

4.结语

至此,便完成了简化版的骰子作画算法的Python代码实现,小伙伴们可以自定义图片内容哦!

欢迎大佬们的指导和点评!

Python实现骰子作画算法相关推荐

  1. 骰子算法 php,骰子作画的算法

    程序员Scott MacDonald做了一个很有趣的项目----骰子作画. 他用黑底白点的骰子. 模拟出一张人像照片. 把图像放大,就可以看得更清楚. 他一共用了2500多颗骰子. 最后的成品就是这样 ...

  2. 华为OD机试 - 最优资源分配(Python) | 机试题算法思路 【2023】

    最近更新的博客 华为OD机试 - 自动曝光(Python) | 机试题算法思路 [2023] 华为OD机试 - 双十一(Python) | 机试题算法思路 [2023] 华为OD机试 - 删除最少字符 ...

  3. c# 骰子作画实现 图片转字符

    效果图 放大局部 参考算法链接:骰子作画的算法 话不多说上代码 public partial class Form1 : Form{public Form1(){InitializeComponent ...

  4. 华为OD机试 - 员工出勤(Python) | 机试题算法思路 【2023】

    最近更新的博客 华为OD机试 - 自动曝光(Python) | 机试题算法思路 [2023] 华为OD机试 - 双十一(Python) | 机试题算法思路 [2023] 华为OD机试 - 删除最少字符 ...

  5. Python版本的数据结构书_《用Python解决数据结构与算法问题》

    源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...

  6. python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章 <扫雷与 ...

  7. python实现快排算法(quicksort)

    python实现快排算法(quicksort) 快速排序是对冒泡排序的一种改进.它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后 ...

  8. 【Python排序搜索基本算法】之拓扑排序

    [Python排序搜索基本算法]之拓扑排序 版权声明:本文为博主原创文章,未经博主允许不得转载.

  9. python数据结构推荐书-「算法与数据结构」从入门到进阶吐血整理推荐书单

    推荐一下「算法与数据结构」从入门到进阶的书单. 一.入门系列 这些书籍通过图片.打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现, ...

最新文章

  1. python使用numpy的np.fmod函数计算numpy数组除以某一特定数值剩余的余数(remainder)、np.mod函数和np.fmod函数对负值的处理方式有差异
  2. JAVA用JNI方法调用C代码实现HelloWorld
  3. MySQL解压缩安装
  4. Tableau必知必会之图表显示部分标签的小妙招
  5. Excel 设定密码保护特定的内容
  6. Flash/Flex学习笔记(30):不用startDrag和stopDrag的对象拖动
  7. 合格linux运维人员必会的30道shell编程面试题及讲解
  8. c语言堆栈基本代码入栈出栈_c语言的简单的进栈出栈
  9. 推荐中的attention有什么作用?
  10. SQA计划和验收测试规程设计
  11. 数据结构:内排序(C++)
  12. oracle查看用户登录失败次数,​oracle查看用户登录失败次数及详细信息
  13. k8s搭建dashboard可视化界面
  14. Eclipse汉化教程
  15. 某跳动面试官:说说微信扫码登录背后的实现原理?
  16. 为什么选择Mapabc
  17. XJOI 3709 测测你的RP
  18. android怎么安装exe软件,安卓手机如何打开.exe文件?
  19. Node学习 | Day04 数据库与身份验证(数据库的基本概念、安装并配置MySQL、MySQL的基本使用、在项目中操作MySQL、前后端的身份验证)
  20. 33暴力破解(MD5撞击)

热门文章

  1. 量子计算机具有天然的处理能力,量子密码
  2. MySQL集群部署(使用多个MySQL实例模拟)
  3. win10 屏幕截图、标注工具
  4. Choreographer原理及应用
  5. Tomcat配置的10个技巧
  6. 如何PHP给人生日祝福,女人要现实的说说 给损友的生日祝福
  7. 苹果cmsv10主题仿V256模板绿色风格免费影视模板
  8. 3.5寸1.44M软盘结构
  9. SQL Server 获取指定某一天的0点和23点59分59秒
  10. python爬虫——爬取酷狗音乐top500(BeautifulSoup使用方法)