七夕节快到了,做个图钉画以及学习下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]

然后就要对比颜色买图钉,买相框,买纸板,买图纸,标记位置,打印等等。

考虑到以上一切,我还是决定某宝了。学以致用难啊。

一万多个图钉,断断续续做了大概一个月,做完的感想是绝对不要做第二次,所以要做的同志请慎重。

当然做完成品还是不错的。

 

posted @   再见紫罗兰  阅读(1881)  评论(1编辑  收藏  举报
编辑推荐:
· 从 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
点击右上角即可分享
微信分享提示