python制作小游戏(三)

thbcm阅读(316)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

本期我们将制作一个拼图小游戏。

好吧也许有些幼稚。

不过无论如何,让我们愉快地开始吧~~~

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1q9VPkOYvI12LjqfQVRCF1Q
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1q9VPkOYvI12LjqfQVRCF1Q

密码: 7wfg

开发工具

Python版本:3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理介绍

游戏简介:

将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状。游戏目标为通过移动非空白块将随机摆放获得的图像恢复成原图像的模样,且规定移动操作仅存在于非空白块移动到空白块。

例如下图所示:

逐步实现:

Step1:游戏初始界面

既然是游戏,总得有个初始界面吧?

OK,我们先写一个游戏初始界面:

效果是这样子的:

根据玩家自身水平,可以选择不同难度的拼图游戏。

Step2:定义移动操作

定义移动操作的目的是为了移动拼图(好像是废话T_T),具体实现起来十分简单:

Step3:游戏主界面

OK,有了前面的铺垫,我们可以开始实现我们的游戏主界面了。

首先,我们需要打乱拼图,但是随机打乱很可能导致拼图无解,因此我们通过随机移动拼图来实现打乱拼图的效果,这也是我们先定义拼图的移动操作的主要原因:

游戏主界面初始化:

最后实现主界面的显示刷新以及事件响应等功能:

Step4:游戏结束界面

当玩家完成拼图后,需要显示游戏结束界面,和游戏初始界面类似,实现起来都比较简单:

OK,大功告成!!!

游戏效果

在cmd窗口运行Game3.py文件即可。

效果如下:

更多

代码截止2018-06-26测试无误。

同样,有兴趣的小伙伴可以在此基础上进行优化,比如增加计时功能,积分功能等等。

Python制作小游戏(四)

thbcm阅读(325)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

本期我们将制作一个简单的滑雪游戏。

废话不多说,让我们愉快地开始吧~

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1F74v1qGVk2NEWMEv-5E25w
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1F74v1qGVk2NEWMEv-5E25w

密码: 2fcv

图片素材源于网络,侵歉删。

开发工具

Python版本:3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

先睹为快

原理介绍

游戏规则:

玩家通过“AD”键或者“←→”操控前进中的滑雪者,努力避开路上的树,尽量捡到路上的小旗。

如果碰到树,则得分减50,如果捡到小旗子,则得分加10。

逐步实现:

Step1:定义精灵类

由于游戏涉及到碰撞检测(滑雪者与树和小旗之间的碰撞),因此我们定义两个精灵类,分别用于代表滑雪者和障碍物(即树和小旗):

其中,滑雪者在前进过程中应当拥有向左,向右偏移的能力,并且在偏移时滑雪者向前的速度应当减慢才更加合乎常理,这样才能供玩家操作。同时,滑雪者应当拥有不同的姿态来表现自己滑行时的状态:

直线:

左偏一点:

左偏很多:

右偏一点:

右偏很多:

另外,尽管滑雪者的左右移动通过移动滑雪者本身实现,但是滑雪者的向前移动是通过移动障碍物实现的。

Step2:随机创建障碍物

现在我们需要定义一个随机创建障碍物的函数,以便在游戏主循环中调用:

Step3:游戏主循环

首先我们初始化一些参数:

其中障碍物创建两次的目的是便于画面衔接。

然后我们就可以定义主循环了:

主循环的内容包括:

事件监听、障碍物的更新、碰撞检测以及分数的展示等内容,总之还是很容易实现的。

Step4:其他

开始、结束界面这些,就靠大家自己发挥了,我就写了一个简单的开始界面:

效果:

All Done!

更多

代码截止2018-07-12测试无误。

欢迎到GitHub上Star:

https://github.com/CharlesPikachu/Games

Python制作小游戏(五)

thbcm阅读(315)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

本期我们将制作一个仿“经典90坦克大战”的小游戏。啊,想起来上一次玩这个游戏的时候才小学呢。T_T真是一款暴露年龄的游戏。

算了废话不多说,让我们愉快地开始吧~

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1Rl6gvHTGfWxuU3KjWYWbBw
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1Rl6gvHTGfWxuU3KjWYWbBw

密码: eksw

图片素材源于网络,侵歉删。

开发工具

Python版本:3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

先睹为快

原理介绍

T_T感觉自己的代码整体上逻辑还是很清晰的,也做了很多必要的注释,所以这里我只讲主要的思路,一些实现细节请阅读我的源代码。

游戏规则:

游戏有单人和双人两种模式,己方大本营被破或者己方坦克被歼灭则游戏失败,成功通过所有关卡则游戏胜利。另外,玩家可以通过射击特定的坦克使地图上随机出现一个道具,若己方坦克捡到该道具,则触发一个事件,例如坦克能力的增强。

玩家操作方式如下:

玩家一:

wsad键:上下左右;

空格键:射击。

玩家二:

↑↓←→键:上下左右;

小键盘0键:射击。

逐步实现:

Step1:定义精灵类

因为游戏肯定涉及到碰撞检测,所以我们需要定义一些精灵类。

首先,既然是坦克大战,总得有坦克吧?

己方坦克:

上面的代码定义了坦克的一些属性,例如速度、等级、是否处于受保护状态等等。

当然这里也实例化了一个子弹类,这个我们之后再定义,先假装有这个子弹类,这样主逻辑才是完整的,不然坦克没有子弹类怎么射击呢?

当然,有属性还是不够的,我们还要赋予坦克一些能力,例如上面所说的射击:

当然还有上下左右的移动,因为都是类似的,这里只给出向上移动的源码:

啊,还有坦克的等级提升与下降:

最后当然是坦克死后重置啦:

敌方坦克:

敌方坦克和己方坦克定义的源代码很相似,只不过移动是随机的,死后是不可复生的,就不截图了T_T。

现在,我们可以来定义子弹类了!

子弹类:

子弹类应当具有例如速度、强度等属性,以及选择方向和移动的能力:

最后,我们来定义其他涉及到碰撞检测的物体类。

大本营:

有正常和被摧毁两种状态:

地图障碍物:

包括砖墙、钢墙、森林、河流和冰:

食物道具:

一共有7种道具,不同的道具对应不同的效果:

Step2:设计游戏地图

Emmmm,游戏的大背景是黑色的,然后在上面堆上一些步骤一中定义的障碍物就可以完成地图设计了。其中,钢墙不能被一般的子弹击破,砖墙可被任意子弹击破,除墙外,坦克可以穿过任意障碍物,不过没有任何附加效果(有兴趣的小伙伴可以自己扩展一下~比如冰上的坦克速度加快等等):

我偷懒只设计了一个地图和两个关卡,有兴趣的小伙伴同样可以在此基础上设计更多的地图和关卡。

Step3:实现游戏主循环

主循环的代码比较长,不过逻辑很清晰。首先展示游戏开始界面,玩家在此界面选择游戏模式后进入游戏;在游戏中,需要进行一系列的碰撞检测以及触发碰撞产生的一系列事件,并绘制当前存在的所有物体;最后,若游戏失败,则显示游戏失败界面,若通关,则显示游戏成功界面(我比较偷懒,界面设计的都比较简陋,有兴趣的小伙伴又可以扩展啦~)。

这里的代码截图就算啦(截长图比较麻烦T_T)~

All Done!

完整源代码和游戏素材以及打包好的游戏文件都在相关文件里有,自行下载查看即可~

更多

代码截止2018-07-19测试无误(T_T其实我没有测试完所有功能,所以有bug的话可以私信告诉我,我想办法修复一下)。

也欢迎有兴趣的小伙伴进一步拓展游戏。

Python制作小游戏(六)

thbcm阅读(315)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

本期我们将制作一个仿“FlappyBird”的小游戏。

让我们愉快地开始吧~

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1AIL9_POn9xbXQ4stvQfhKw
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1AIL9_POn9xbXQ4stvQfhKw

密码: zhm6

图片与音频素材源于网络,侵歉删。

开发工具

Python版本:3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

先睹为快

原理介绍

FlappyBird游戏简介:

玩家通过空格键控制一只小鸟,使其跨越由各种不同长度水管所组成的障碍物,当小鸟碰撞到障碍物或跌至屏幕最底端时,游戏结束。

逐步实现:

Step1:定义精灵类

为了方便实现小鸟和水管之间碰撞的检测,我们先定义一些精灵类,包括:

① 小鸟类

随着游戏时间的推移,小鸟应当具有更新自身位置的能力,即当玩家按下空格键时,小鸟向上跳跃,否则小鸟向下坠落。另外,为了使游戏场景更加真实,小鸟在向上跳跃或者向下坠落之前,应当先调整身体角度。具体代码实现如下:

② 管道类

管道分为管道体和管道头。管道头:

管道体:

可先简单定义如下:

显然,一个管道头和若干个管道体组成了一个管道障碍物,管道障碍物两两同列,两者之间留有一定的空间供小鸟穿过,就像这样:

因此,我们定义一个大的管道类,以便构建一个完整的管道障碍物,代码实现如下:

其中,更新管道的作用为通过管道的左移来实现小鸟不断右移的效果。

 Step2:实现游戏主循环

先初始化,载入图片、音乐、字体等文件,并定义一些必要的常量:

现在就可以开始定义游戏主循环了!游戏主循环的逻辑十分简单,先显示游戏背景,然后根据玩家的操作更新小鸟位置,自动更新管道位置,并通过碰撞检测以及小鸟的纵坐标来判断游戏是否结束,若游戏结束,则显示游戏结束画面。当然你也需要根据玩家通过的管道数量来实时更新玩家当前的分数,这一步需写在最后,否则分数会被管道所遮盖,这显然是不合理的,具体实现如下:

All Done!

更多

代码截止2018-08-05测试无误。

本系列文章相关文件中均提供了打包好的版本,无需环境搭建即可运行玩耍~

Python处理手写笔记

thbcm阅读(312)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

利用Python实现手写笔记的压缩与增强。

至于起因大概是:

这个内容很有趣。。。

——>

说了等于没说。T_T

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1oagM2fbKUJXSiZ93S_Mszg
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1oagM2fbKUJXSiZ93S_Mszg

密码: 47ws

参考文献

链接:

https://mzucker.github.io/2016/09/20/noteshrink.html

作者:

Matt Zucker

主要思路

Step1:确定背景色

假定纸张颜色是扫描图像中最常出现的那一种颜色。

同时将8比特每通道消减至6比特每通道来增加背景色获取的可靠性。

Step2:分离前景色

将色彩从RGB空间映射到HSV空间来实现分离前景色的功能。

规则默认为:

(1)明亮度V比背景色大0.3以上;

(2)饱和度S比背景色大0.2以上。

满足其中一条即为前景色。

Step3:选择呈现色

相当于使用簇分析法解决一个色彩量化问题。

将原始24位每像素的图像转换成一个具有小数量代表色的图像。

主要使用K均值算法实现。

其他说明:

(1)默认情况下,程序会通过重新设置颜色的最大最小强度值为0到255,来增加最后调色板各色的艳丽度和对比度;

(2)程序默认情况下自动地根据输入文件名排序,关键字为数字。

开发工具

Python版本:3.5.4

相关模块:

Scipy模块、numpy模块、PIL模块以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

使用演示

全部功能选项:

基本功能使用:

py -3.5 Note_Processor.py + 待处理的笔记图片名

例如下图:

结果展示

笔记1:

结果图:

笔记2:

结果图:

更多

若对结果不满意,请自行在命令行窗口设置相应的参数,即不要使用默认值;

例如:

Python实现AI版贪吃蛇

thbcm阅读(371)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

利用Python简单地实现AI版的贪吃蛇。。。

just for fun…

没有用深度学习。。。

算法是由一个叫Hawstein的人在好多好多年以前提出,感觉很有趣,就花了点时间复现了一下他的想法。。。

至于效果。。。

看脸。。。

真的只是觉得他的想法很有趣,仅此而已,因为如果你想让蛇机械地充满整个空间,只需要让蛇一直走S就好了,但是这就变得很无趣了。。。

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1KPAV6FKLUFj11myoVjzQ2Q
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1KPAV6FKLUFj11myoVjzQ2Q

密码: gb7k

主要思路

(1)蛇每走一步,就使用BFS计算游戏界面中每个位置(蛇身除外)到达食物的最短路径长;

(2)将蛇的安全定义为蛇是否可以跟着蛇尾运动,即蛇头和蛇尾间是否存在路径;

(3)蛇每次行动前先利用虚拟的蛇进行探路,若虚拟的蛇吃完食物后是安全的,真蛇才行动;

(4)若蛇和食物之间不存在路径或者吃完食物后并不安全,就跟着蛇尾走;

(5)若蛇和食物之间、蛇和蛇尾之间均不存在路径,就随便挑一步可行的来走;

(6)保证目标是食物时蛇走最短路径,目标是蛇尾时蛇走最长路径。

不足之处

由于食物是随机出现的,若虚拟的蛇跑一遍发现去吃食物是不安全的,真蛇就不会去吃食物,而是选择追着蛇尾跑,若一直如此,就陷入了死循环,蛇一直追着蛇尾跑跑跑。。。

直到你终止游戏为止。。。

开发工具

Python版本:3.5.4

相关模块:

pygame模块以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

运行方式

在cmd窗口运行AI_snake.py文件即可。

结果展示

动图一直上传失败。。。

所以随便截几个图吧~~~



更多

(1)为了保证代码简单易懂,所提供的代码冗余度较高(比如进行了不必要的重复计算),有兴趣者可对代码进行优化;

(2)相关文件中也提供了普通版本的贪吃蛇游戏(Normal_snake.py)。

Python制作简易浏览器

thbcm阅读(302)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

好久以前看到有人做过。。

今天心血来潮。。

就想自己试试。。

仅此而已。。

用的PyQt版本是5.10.。。

网上关于PyQt5.10的中文教程=None。。

所以最后做出来的效果一般(毕竟短时间内啃不动官方那全英文的教程)。。

So,

don’t get your hopes up…

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1V95QG5PZCigx86S8hgf5Rg
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1V95QG5PZCigx86S8hgf5Rg

密码: si8r

主要思路

主要实现的功能:

(1)可以正常显示网页;

(2)设置导航栏,用以实现浏览器的前进、后退、停止加载和刷新功能;

(3)设置地址栏,可以实时更新当前网页的URL,同时支持输入地址回车访问功能;

(4)设置标签页,可通过双击导航栏打开新的标签页,从而支持同时访问多个页面。

底层传输协议等功能的实现方式:

借助PyQt5的QtWebEngine模块。

具体实现过程见源代码(有较为详细的注释)。

不足之处

初步测试无Bug,但有时会有卡顿。。。

感兴趣者可自行优化。。。

欢迎后台交流(T_T如果不嫌弃我是刚入坑半天的小白的话)。。。

欢迎在后台提出修改意见。。。

若有必要,我可以再水一篇类似“Python制作简易浏览器(后续优化)”的文章hhhhh。。。

开发工具

Python版本:3.5.4

相关模块:

PyQt5模块(5.10版本)以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

使用演示

在cmd窗口运行Create_Browser.py文件即可。

如下图所示:

更多

PyQt5快速入门文档已分享在此公众号底部菜单栏中,供有需要者参考。

文档主要参考了CSDN上的一些博文整理的且亲测PyQt5.10版本可用。

日后有时间将整理PyQt5.10版本完整使用文档。

Python实现浪漫表白

thbcm阅读(314)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

不要被上面的照片所迷惑。。。

Python做上面的照片?

不存在的。。。

只是最近看到好多jQuery+H5的表白代码。。。

想着用Python应该也可以?

Just have a try~~~

提前声明

T_T请不要信任我在这方面的审美水平;

T_T代码仅供参考,使用前请自行精心优化,否则被拒概率或许将高达99.99%。

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1dc6-tFgBpAgnQUbci87l9Q
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1dc6-tFgBpAgnQUbci87l9Q

密码: yyrw

开发工具

Python版本:3.5.4

相关模块:

jieba模块、scipy模块、wordcloud模块、pygame模块、matplotlib模块以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

尝试一:画表白树

具体原理见源代码吧~~~

其实就是一个递归而已~~~

使用方式:

在cmd窗口运行Unburden.py文件即可:

效果:


尝试二:词云

原理也很简单就不多说了~~~

(T_T详见源代码)

使用方式:

在cmd窗口运行Confession.py文件即可:

效果图:

(1)英文情诗

(2)周董的歌

更多

确实没有什么精力去优化这些东西。。。

So,

如果你真的用到的话。。。

用之前一定要自己再精致地优化一波呀!!!

T_T

Python制作简易SSH登录工具

thbcm阅读(311)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

做这个的起因大概是:

电脑里的Xshell不知道为啥突然显示“评估期已过”之类的提示。。。

记得之前认证学校邮箱后是可以免费使用的。。。

苍天绕过谁。。。

想起上次认证学校邮箱过了N个小时才收到那封认证的邮件。。。

我决定。。。

自己动手,丰衣足食。。。

反正好多天没更公众号了。。。正好水一波。。。

Just have a try!

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1-GK9-zdbvanTEXphSN2SmQ
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1-GK9-zdbvanTEXphSN2SmQ

密码: djdj

开发工具

Python版本:3.5.4

相关模块:

paramiko模块以及一些Python自带的模块。

操作系统:

Windows系列。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

主要思路

目的:

制作命令行版的SSH登录工具。

需要实现的功能:

(1)添加/删除连接服务器需要的IP、端口、密码;

(2)自动输入密码登录远程服务器。

具体思路详见源代码。

PS:

本着用了Python那就尽量不制造轮子的原则,SSH登录主要借助了paramiko模块。

使用演示

放个视频吧。。。

懒得截图了。。。

更多

此代码仅适用于Windows系统。

有兴趣者可自行修改源代码制作Mac/Linux版本。

使用过程中若有任何优化意见:

欢迎后台交流!

以后若有时间将进一步优化和扩展该脚本。

Python简单实现隐写术

thbcm阅读(360)

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

利用Python简单实现图片隐写术。。。

或者说是水印技术。。。

说实话,真的只是简单实现。。。

没什么技术含量。。。

可以说是入门级的隐写术/水印技术。。。

Let’s Go?

相关文件

百度网盘链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1DNVk11rMcFk9u-B7GE4Jow
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1DNVk11rMcFk9u-B7GE4Jow

密码: 9ffy

开发工具

Python版本:3.5.4

相关模块:

cv2模块;

pillow模块;

numpy模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

相关文件中的源代码主要实现了两种水印技术:

(1)空域数字水印

实现的是基于LSB的水印技术。。。

(2)频域数字水印

实现的是基于FFT的水印技术。。。

T_T确实没啥技术含量吧?

图片需为PNG或BMP格式。。。

若频域数字水印效果不佳,请修改alpha因子大小。

具体实现过程详见源代码。。。

使用演示

可直接运行或作为模块导入。

功能:

直接运行方式:

在cmd窗口运行Watermark.py即可。

演示一:基于FFT

载体图片:

水印图片:

嵌入效果:

解水印:

演示二:基于LSB

载体图片:

水印文字:

公众号:Charles的皮卡丘

嵌入效果:

解水印:

更多

上述内容只是入门级的隐写术/水印技术。。。

这是一项非常有趣的技术。。。

以后有机会会复现一些进阶版的水印算法。。。

联系我们