百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

一个Python小程序的分享,码农的乐趣就是爱折腾

off999 2024-11-21 19:14 29 浏览 0 评论

文 | JiawuLab ,原创作品。

前两天,我用Python写了个小程序,主要功能是将一张图输入后,程序会输出字符图,然后将字符图保存在txt文本中,效果图如下:

昨天将这个小程序的一些技术要点发布到了微头条中,这里将技术要点贴出来:

1、首先对图片进行黑白处理、对比度处理,这样可以去除很多的噪点,
2、然后使用了getpixel()方法,该方法可以得到当前位置图片的颜色值,
3、再通过颜色值的判断,就能将不同的颜色值处理成对应的符号,这里我处理为“#“ ,
4、最后将所有颜色值处理后得到的符号信息,保存为txt文件。

如上图,微头条获得很多朋友的关注,短短一天的时间,阅读数就突破了1万2,特别高兴,我会继续加油的。

本篇文章将创造这个小程序中的思考与实践过程分享给大家,也期待大家能理解造轮子过程的乐趣。


一、为什么会写这个小程序?

说来话并不长,在学习群中,有位可爱的同学,分享了一张某程序员的注释图,里面写了篇打油诗,还配了张字符图,就是下面这张图:

看得出作者非常的有才气,只是好像言语之中透露了某些信息,哈哈?

而我看到的就是下面这尊字符串佛像,触发了自己写个小程序将图片转换为字符图的念头,这就是我写这个小程序的初衷。


二、思考过程

我初步的想法是:

1、在网上找一张图,然后将图片转化为黑白图,
2、利用PIL库中的方法,获取图片上的颜色数值,
3、将黑色和白色的部分,分别用不同的字符串代替

最后打印出来就可以了,而且技术实现也很简单。


三、实践过程

首先,我在网上找到了一张很有feel的图片,如下图:

技术实现过程如下:

1、convert('1'),用来转化为黑白图,
2、使用PIL库中的getpixel()方法获取颜色数值,此时只有“0”、“1”,
3、使用"for"循环,遍历整张图片,将“0”、“1”分别用“ ”,“#”代替,得到字符串并打印

运行代码,发现图片太大,显示不出来,如下图中红色箭头指的部分,只是图片中最左上角的一点:

于是改代码,做出下面两点修改

1、利用“resize”函数,将图片尺寸更改为固定宽度“150”,高度使用运算公式获取,代码为:“im.resize((150, int(im.size[1]/im.size[0]*150)))”
2、将字符串,输出到“txt”文本中,方便运行查看

运行后,打开保存的txt文件,发现全糊了,根本看不清是什么。

如上图,完全看不出是什么,于是我用“im.show()”方法,查看了黑白图片是什么样的:

从这里就能看出来,原来生成的黑白图片的噪点太多,除了狮子是糊的,左下角也都是噪点。

所以在原图转为黑白图片前,需要做一下图片处理,这里就会用到"ImageEnhance"方法,进行对比度等图片处理,比如此处用到的对比度图片代码为“ImageEnhance.Contrast(im).enhance(2.0)”

这样就好很多了,图片上基本上没有太多噪点了,狮子整体也非常明显,但是有点太亮了,所以再次使用亮度处理,代码为“ImageEnhance.Brightness(im).enhance(0.9)”

现在黑白图片整体看上去,就比较不错了,可以进行字符图的生成。

在前面生成的字符图中,我发现一个问题,周边设置为空白,不是很好看,所以修改技术点为:

将“0”、“1”分别用“ ”,“#”代替——改为将“0”、“1”分别用“#”,“ ”代替

只是将字符串替换了一下,最后得到的字符图为:

一只王者气派的狮子字符图就做好了,是不是很像那么回事。

在图片处理过程中,其实做了很多动作,包括选择图片处理效果时,使用了很多的方法,最后确定下来使用对比度和亮度的结合。

而对比度和亮度处理中的参数,也需要不断的进行优化,最后才能呈现出比较漂亮的结果。

如上图,放上原图和字符图的对比效果,字符图会有一些纵向拉伸的效果,这是因为txt文件的行间距的问题。换个角度来看,这就是天然的瘦身效果哦。


四、复杂背景图片的演示

狮子这张图是背景比较简单的图片,那么背景复杂的效果又会如何呢?(永远要有一颗折腾的心?)

我在网上找到一张背景复杂的图片,如下图:

然后运行程序,看看会得到什么呢?(我想应该美女应该会变瘦哦,哈哈?)

果然,生成的字符图中,美女变得又高又瘦,我感觉比原图更好看啦?

我又找了另一张图,生成的效果,还不错吧。


五、代码分享

最后,我将代码分享给大家,整个代码不到20行,特别简单:


需要提醒的是:有些图片生成的字符图会不太好看,你自己可以根据需要调整参数或是图片处理方法。


六、总结

本期文章中,我将创作一个小程序的整个过程分享出来,其中包含前期的思考过程,功能实践过程,以及功能调优过程。

我认为最重要的一点就是前期的思考过程,通过对需求的分析,能够让我们找到合适的技术实现要点,从而让整个实践过程可控,能更顺利的实现功能。

希望你喜欢本期的分享,欢迎大家在评论区讨论、转发,或者顺手点个赞。谢谢。

相关推荐

笔记本电脑选哪个品牌比较好

1、苹果APPLE/美国2、戴尔DELL/美国3、华为HUAWEI/中国4、小米MI/中国5、微软Microsoft/美国6、联想LENOVO/中国7、惠普HP/美国8、华硕ASUS/...

10系列显卡排名(10系显卡性能排行)

十系显卡指NVIDIAGeForce10系列,是英伟达研发并推出的图形处理器系列,被用以取代NVIDIAGeForce900系列图形处理器。新系列采用帕斯卡微架构来代替之前的麦克斯韦微架构,并...

最新win7系统下载(windows7最新版本下载)
最新win7系统下载(windows7最新版本下载)

最简单的方法就是,下载完镜像文件后,直接把镜像文件解压,解压到非C盘,然后在解压文件里面找到setup.exe,点击运行即可。安装系统完成后,在C盘找到一个Windows.old(好几个GB,是旧系统打包在这里,垃圾文件了)删除即可。扩展资...

2026-01-15 06:43 off999

哪个电脑管家软件好用(哪个电脑管家好用些)

腾讯电脑管家吧,因为这个是杀毒和管理合一的,占用内存小,因此显得更为简洁,使电脑运行更加流畅此外电脑诊所,工具箱以及4+1的杀毒模式让腾讯电脑管家也收到了广泛的关注4+1杀毒引擎,管家反病毒引擎、金山...

怎么进入win7安全模式(怎么进入win7安全模式界面)

方法如下:1、首先进入Win7系统,然后使用Win键+R组合键打开运行框,输入“Msconfig”回车进入系统配置。2、在打开的系统配置中,找到“引导”选项,然后单击,选择Win7的引导项,然后在“安...

怎么分区固态硬盘(怎样分区固态硬盘)

固态硬盘的分区方法与传统机械硬盘基本相同,以下是一个简单的步骤:1.打开磁盘管理工具:在Windows操作系统中,按下Win+X键,选择"磁盘管理"。或者打开控制面板,在"...

笔记本声卡驱动怎么下载(笔记本如何下载声卡)
笔记本声卡驱动怎么下载(笔记本如何下载声卡)

1、在浏览器中输入并搜索,然后下载并安装。2、安装完成后打开360驱动大师,它就会自动检测你的电脑需要安装或升级的驱动。3、检测完毕后,我们可以看到我们的声卡驱动需要安装或升级,点击安装或升级,就会开始自动安装或升级声卡了。4、升级过程中会...

2026-01-15 05:43 off999

win10加快开机启动速度(加快开机速度 win10)

一、启用快速启动功能1.按win+r键调出“运行”在输入框输入“gpedit.msc”按回车调出“组策略编辑器”?2.在“本地组策略编辑器”依次打开“计算机配置——管理模块——系统——关机”在右侧...

excel的快捷键一览表(excel的快捷键一览表超全)
excel的快捷键一览表(excel的快捷键一览表超全)

Excel快捷键大全的一些操作如下我在工作中经常使用诸如word或Excel之类的办公软件。我相信每个人都不太熟悉这些办公软件的快捷键。使用快捷键将提高办公效率,并使您的工作更加轻松快捷。。例如,在复制时,请使用CtrI+C进行复制,...

2026-01-15 05:03 off999

华硕u盘启动按f几(华硕u盘装系统按f几进入)

F8。1、开机的同时按F8进入BIOS。2、在Boot菜单中,置secure为disabled。3、BootListOption置为UEFI。4、在1stBootPriority中usb—HD...

bootmgr(bootmgrismissing开机不了怎么办)
  • bootmgr(bootmgrismissing开机不了怎么办)
  • bootmgr(bootmgrismissing开机不了怎么办)
  • bootmgr(bootmgrismissing开机不了怎么办)
  • bootmgr(bootmgrismissing开机不了怎么办)
手机云电脑怎么用(手机云端电脑)

使用手机云电脑,您首先需要安装相应的云电脑应用。例如,华为云电脑APP。在安装并打开应用后,您将看到一个显示器的图标,这就是您的云电脑。点击这个图标,您将被连接到一个预装有Windows操作系统和必要...

ie11浏览器怎么安装(ie11浏览器安装步骤)

如果IE浏览器11版本你发现无法正常安装,那么很可能是这样几个原因,一个就是电脑的存储空间不够到时无法安装,再有就是网络的问题,如果没有办法安装的话就不要再安装了,本身这个IE浏览器并不是多好用,你最...

台式机重装系统win7(台式机怎么重装win7)

下面主要介绍两种方法以重装系统:一、U盘重装系统准备:一台正常开机的电脑和一个U盘1、百度下载“U大师”(老毛桃、大白菜也可以),把这个软件下载并安装在电脑上。2、插上U盘,选择一键制作U盘启动(制作...

字母下划线怎么打出来(字母下的下划线怎么去不掉)

第一步,在电脑上找到文字处理软件WPS,双击即自动新建一个新文档。第二步,在文档录入需要处理的字母和数字,双击鼠标或拖动鼠标选择要处理的内容。第三步,在页面的左上方的横向菜单栏,找到字母U的按纽,点击...

取消回复欢迎 发表评论: