七夕节快到了,做个图钉画以及学习下Pillow吧
又有时间写东西了,最近深感世事并不以人的美好愿望而改变,还是要以积极地心态来适应新变化,多多关心身边的人。
图钉画中一个图钉代表一个像素,所以关键在于像素渣化,降低分辨率,图钉的色彩有限,还需要降低图片的色彩数量,统计各种色彩的数量及位置。
以上都可以用Pillow完成,Pillow是Python中用来兼容或者代替PIL的图像处理库。
1 | pip install pillow |
以下图为例:
首先降分辨率,大概1万个图钉可以达到较好的外观效果,以此可以确定图片的长宽:
1 2 3 4 5 6 | >>> from PIL import Image >>> img = Image. open ( '20180707.jpg' ) >>> print img.size ( 512 , 512 ) >>> img = img.resize((img.width / 5 , img.height / 5 )) >>> img.save( 'target.jpg' ) |
效果如下:
渣化很明显了,放大后可以看到一个个的像素格子。
转成32色:
1 2 3 | >>> img = Image. open ( 'e:/target.jpg' ) >>> img = img.convert( 'P' , colors = 32 , palette = 1 ) >>> img.save( 'e:/32_target.jpg' ) |
统计色彩数量:
1 2 3 | >>> img = Image. open ( 'e:/32_target.png' ) >>> print img.getcolors() [( 332 , 0 ), ( 416 , 1 ), ( 253 , 2 ), ( 359 , 3 ), ( 292 , 4 ), ( 335 , 5 ), ( 435 , 6 ), ( 231 , 7 ), ( 404 , 8 ), ( 218 , 9 ), ( 377 , 10 ), ( 268 , 11 ), ( 467 , 12 ), ( 303 , 13 ), ( 256 , 14 ), ( 255 , 15 ), ( 455 , 16 ), ( 391 , 17 ), ( 241 , 18 ), ( 368 , 19 ), ( 244 , 20 ), ( 470 , 21 ), ( 266 , 22 ), ( 215 , 23 ), ( 397 , 24 ), ( 276 , 25 ), ( 285 , 26 ), ( 308 , 27 ), ( 352 , 28 ), ( 400 , 29 ), ( 295 , 30 ), ( 240 , 31 )] |
可以看到从0号-31号色的数量,
不清楚颜色的话,可以转化成RGB模式:
1 2 3 | >>> img = img.convert( 'RGB' ) >>> print img.getcolors() [( 253 , ( 240 , 173 , 157 )), ( 292 , ( 236 , 151 , 129 ))...] |
就可以根据RGB去对比颜色买图钉了。
确定每个位置的颜色:
1 2 3 4 | >>> px = img.load() >>> for x in xrange ( 102 ): for y in xrange ( 102 ): print px[x, y] |
然后就要对比颜色买图钉,买相框,买纸板,买图纸,标记位置,打印等等。
考虑到以上一切,我还是决定某宝了。学以致用难啊。
一万多个图钉,断断续续做了大概一个月,做完的感想是绝对不要做第二次,所以要做的同志请慎重。
当然做完成品还是不错的。
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
2014-08-13 Python命令行解析库argparse