Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

这篇教程将会展示如何用python的图形化包“Pygame”和基础的文件I/O来创建一个自写程序。这个程序将可以仿照给定的图片来创作一幅马赛克画。Python是一种非常强大的编程语言。它有着许多的内建函数和可下载的软件包。在这片教程的末尾,你将会拥有一副属于你自己的蒙娜丽莎马赛克画并且将会学会如何对所有你喜欢的图片进行处理。注意,本文是为那些对Python,Pygame和文件I/O有着深刻理解的用户准备的。

第一部分 下载图片

1.下载《蒙娜丽莎》的图片。这是创建你的马赛克画的基础。注意这幅图像的尺寸(以像素为单位)将对所要写的代码有重要影响。

·将它保存为“mona.jpg”

·图像大小设置为743像素* 1155像素。确保图片是以这个尺寸保存的,否则将不会得到正确地马赛克图片。

第二部分 创建主程序

1.打开一个新的Python文件。将其命名为“makeMona.py”(可自定义)。

2.导入所需要的模块。这个程序需要Pygame模块来显示图片并且需要Math模块来执行你所添加的功能。

3.创建显示图片的部分。在开始处理图像以前,需要创建显示窗口以使Mona Lisa图像能够被加载并且显示出来

·display.set_mode((743,1155))是对于显示尺寸的设置。(743,1155)代表显示的尺寸;注意这要和图像的尺寸一致。

4为自写程序创建一个目标文件。在“makeMona”程序中,设置要写入的新文件。

·变量mon是您对于马赛克文件的引用。声明中新文件叫做“mona.py”。“w”代表将会对新文件进行写入的操作。

5初始化新程序。现在可以开始写入“mona.py”文件。在这里你需要导入新文件所需的模块以及设置显示图片的尺寸。

·mon.write表示现在正把下面的代码写入到新文件中。其中设置的显示尺寸要和Mona Lisa图像的尺寸一致。

6在makeMona.py中显示图片。为了确认你的图片已经正确地加载到你的程序中,你需要让图片显示出来。

7.绘制马赛克图片。现在可以将图片分解为小的色块来创建马赛克图像。为了得到最好的马赛克效果而不至于使得图像变形,建议将五个像素合并到一个色块内。

·mon.write("draw.rect(screen,"+c+",("+str(x)+","+str(y)+",4,4)) ")这是最重要的一行,分析如下:

·draw.rect(screen,"+c+", 用来描绘一个个马赛克色块(屏幕上显示出来的一个个小矩形) 然后将颜色"c"关联到屏幕的对应位置 str(screen.get_at((x,y)))。这是如何将颜色映射到每个像素的过程。

·("+str(x)+","+str(y)中的"x"和"y"代表色块的坐标。用str()来转换是由于程序需要按处理字符串的方式来处理这些坐标值(这是因为现在这些值是在三引号中,而所有引号中的值都是string格式)

·+",4,4)) ")中的4,4用来表示马赛克华中每个色块的尺寸,“”是换行符,用来是程序切换到新的一行来写接下来的代码。

8.创建while-running循环。像所有的Pygame程序一样,你必须在mona.py中写入while-running循环。

第三部分 代码的检查和测试

1.检查代码。你的主程序makeMona.py现在已经完成了。以下是完整的代码。

2.打开新生成的mona.py文件。在你makeMona程序所保存的目录下,可以找到新生成的mona.py程序文件。

·如果你打开这个文件,你将会发现几百行代码。这简直就像魔法一般,每行代码都对应着马赛克画中的一个独立色块。

·打开这个文件可能需要几秒钟的时间;因为它非常的大。

3.运行mona.py。如果之前的每一步都没有问题,最后一步只需要运行mona.py来看下你的《蒙娜丽莎》马赛克画。

第四部分 常见问题

1排除程序故障。在实现你自己的马赛克代码中很容易犯一些小错误。以下是一些会遇到的常见问题以及解决方法。

·新生成的程序文件在哪?主程序运行完毕后,新程序文件应当出现在主程序所在的目录中。

·新生成的程序不能执行。你为自写程序所写的所有代码都在三引号之中。检查所有引号之中的代码,确保没有丢掉冒号引号或者缩进方面的错误。

·为什么图像扭曲了?这可能是由于错误的显示尺寸所造成的。确保display.set_mode()中的显示尺寸在整个代码中是相同的。

英文原文:http://www.wikihow.com/Make-a-Self%E2%80%90Writing-Mosaic-Program-in-Python

译者:D

python编程代码画画_如何用python编写一个绘制马赛克图像的自写程序相关推荐

  1. 如何用python编写一个绘制马赛克图像的自写程序mask = np.zeros

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这篇教程将会展示如何用python的图形化包"Pygame"和基础的文件I/O来创建一 ...

  2. python编程代码画画_python编程:创意抽象画

    一.编程目的: 1.绘制100个随机长方形 2.绘制100个随机三角形 二.编程环境: 1.python3+pycharm 2.导入模块: 图形用户界面模块 :tkinter 随机数模块:random ...

  3. 温度转换python代码解释_如何用python代码温度转换?

    如何用python代码温度转换? 用python代码温度转换的方法: 步骤一:分析问题的计算部分 步骤二:确定功能,使用IPO方法进一步分析 输入:华氏或者摄氏温度值.温度标识 处理:温度转化算法 输 ...

  4. python 矩阵运算 for循环_如何用 Python 科学计算中的矩阵替代循环

    展开全部 因为在Mathematica中使用循环确实是低效的.32313133353236313431303231363533e78988e69d8331333361313961..... 深层次的原 ...

  5. python贪吃蛇控制台_如何用Python写一个贪吃蛇AI

    前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...

  6. python搭建自动化测试平台_如何用python语言搭建自动化测试环境

    原标题:如何用python语言搭建自动化测试环境 技术分享:基于Python语言的Web自动化测试环境搭建 近期发现很多初学者在学习自动化的过程当中,在环境安装环节总是出现问题,所以详细的出一篇环境搭 ...

  7. 如何制作python检查小软件_如何用Python制作整蛊小程序

    原标题:如何用Python制作整蛊小程序 下面的整蛊程序,千万不要发代码,否则就实现不了你整蛊的目的了.完成后一定要打包成一个exe程序,再发给朋友使用 . 1. 使用 pip install pyi ...

  8. python rest api 测试_如何用Python编写REST API的单元测试

    在过去的几个月中,正在从事一个名为B的项目.它是带有简单Web UI的徽章生成器,用于添加数据并生成PDF可打印徽章.B后端现在已转移到REST-API并测试REST-API中使用的功能,我们需要一些 ...

  9. python的out模式_如何用python中的DataFrame列的模式替换NA值?

    我对Python(和本网站)完全陌生,目前正试图用它们的模式替换特定数据帧列中的NA值.我试过了各种不起作用的方法.请帮我看看我做错了什么:如何用python中的DataFrame列的模式替换NA值? ...

最新文章

  1. Fragment 中使用 getLayoutInflater() 的问题
  2. 【Linux】Linux简单操作之压缩解压
  3. python条件赋值
  4. 【响应式Web前端设计】CSS3伪类与伪元素的区别
  5. [CareerCup][Google Interview] 找出现次数
  6. PHPCMS 学习
  7. linux下静态库和动态库的制作与使用
  8. Puppet 资源公有属性的其他描述方式(三十)
  9. android程序表白,几条曲线构建Android表白程序
  10. HTTP Status 500 - 问题
  11. Protobuf语言指南
  12. GaussDB(for Redis)揭秘:Redis存算分离架构最全解析
  13. java中的subString与SQL中的subString(作为常识应该记住的)
  14. 【数据分享】工人收入工资及其社会经济影响因素数据
  15. 虚拟服务器连接监控,方案:浅谈虚拟化平台的监控管理
  16. 内存颗粒的逻辑bank理解
  17. python如何输出结果到txt_详解python读取和输出到txt
  18. 【Games101】Lecture05 光栅化 笔记
  19. js与php与mysql_PHP、MySQL和JavaScript入门经典(第6版)
  20. 2021最新 RocketMQ面试题精选(附刷题小程序)

热门文章

  1. 数据价值应用——数据分析
  2. Esp8266进阶之路11 企业者的福音之8266接入阿里智能,点亮一盏LED灯,期待天猫精灵语音控制的不约而至!
  3. 软件测试117道面试题直击面试官灵魂
  4. Docker容器域名解析失败
  5. 计算机cpu的功能和作用是什么意思,电脑的CPU和内存都起什么作用?
  6. 用Qt画圣诞树——要画就画最丑的圣诞树
  7. 获取HTML页面的所有图片地址
  8. 罗杨美慧 20190912-2 命令行
  9. 山东畜牧兽医职业学院计算机考试,山东畜牧兽医职业学院计算机自编word15套试题11Word模拟试题(1-15)...
  10. 原来,数据分析还可以这样干......