![87dd4d9b292987e804b4fcd4ba4e78c1.png](https://i-blog.csdnimg.cn/blog_migrate/a4c491dcbaaf4e6d6314f6152c852e37.jpeg)
首先感谢大家对上篇文章“python实现传染病模型”的肯定:
孙小白:#带你学Python# 疫情当前,在家没事?你也可以用Python预测疫情发展zhuanlan.zhihu.com![4e1d191ca7add0a6d03e5219c03d2a7b.png](https://i-blog.csdnimg.cn/blog_migrate/ced5fb5212f61b47f824fc3ee773209a.jpeg)
感谢大家的评论,私信和交流。你们的肯定是我继续更新的动力!
应大家的要求,这里补充一下上篇文章的源码连接(包括:SEIR, SI, SIR模型实现和粒子群算法拟合实际数据,欢迎交流学习)
https://github.com/XuelongSun/Dynamic-Model-of-Infectious-Diseasesgithub.com上篇文章,紧跟热点,但好像有些严肃了。今天我们轻松一下,学一点好玩的:
![1d86dd2d1836ea7a7bf0693b3706f8d8.png](https://i-blog.csdnimg.cn/blog_migrate/736c524a2eddea755fde9223f0bfb005.jpeg)
看了这篇文章,你就可以很轻易地发出这样效果的微信消息,不仅是爱心哦,可以是任何你想要的形状。
行动起来,来一场有趣的告白(撩骚)吧!
1.从图片谈起
如果我问你,什么是图片/照片/图像/image/picture?
你脑海里可能是这样的:
![f69323ac4c678b5ccaff14f9727be7b8.png](https://i-blog.csdnimg.cn/blog_migrate/97b6d6b0a2dae34d94dc50ff962ee1e1.png)
这样的:
![baca6461f71c4905a7d6e79aadd3bdb8.png](https://i-blog.csdnimg.cn/blog_migrate/434e86d183e094a22fa0af82c36af428.jpeg)
或者是这样的(emm!嗯):
![07cf74b374dc66e35bc555ae994b3588.png](https://i-blog.csdnimg.cn/blog_migrate/57e5e580b3b73f5f489ee91552126b8a.jpeg)
和这样的:
![896d169277a3f59af4c5ddf2848ee282.png](https://i-blog.csdnimg.cn/blog_migrate/23f8b337bd403668913c480d143efd5a.png)
但,如果你问一个做图像处理的研究生,或者是做图像的程序员,他们的脑海里是这样的:
![3a2ede56a575145772b745f048af223f.png](https://i-blog.csdnimg.cn/blog_migrate/35a3e2145701f6e40602a0a5a4a5d807.jpeg)
对的,矩阵化和数字化。
任何一张图片的计算机本质都是一个二维的数据矩阵。
不信?实践是检验真理的唯一标准。来,打开你的python jupyter lab. 让我们代码敲起来!
还没有安装jupyter lab的同学,看这里:
孙小白:#带你学Python# 搭建Python环境,第一次触摸Pythonzhuanlan.zhihu.com![f0e04bde73346f2dc365dff3012fc572.png](https://i-blog.csdnimg.cn/blog_migrate/bbeb4f74e16a52f86badcd51425bf7bb.jpeg)
今天我们要用到Python扩展包有:numpy, matplotlib 和 cv2. 前两个我们上篇文章已经安装啦,cv2我们还是使用pip安装:
pip install opencv_python
cv2是opencv的python版本,是个非常强大的图像处理工具包。感兴趣的可以了解更多:
https://pypi.org/project/opencv-python/pypi.org导入这三个包之后:
import
敲入如下代码,运行:
image
你将会看到类似这样美丽的马赛克:
![ea3992ef2cc92df1f07be62ff81a77e6.png](https://i-blog.csdnimg.cn/blog_migrate/a8b414ff77774f9eb9f763a5d8bc9c08.png)
我们来看看image的值:是一个5x5的浮点数矩阵
![cf28140859fcb8a3132a45298c624402.png](https://i-blog.csdnimg.cn/blog_migrate/7055f4946a44a0817fe9e56d60b3dfcf.png)
这个值是由numpy的random模块产生的:
image
调用random函数随机产生一个5x5在区间[0,1)的符合均匀分布的浮点数。因为是随机的,所以你产生的马赛克和我的可能不太一样,但都很好看,因为我们使用了matplotlib的内建colormap,也就是代码:
ax
中的cmap所给的值,它将矩阵中的值和具体的颜色建立一一对应的关系(map的含义), 究竟和什么样的颜色建立关系,就由不同的cmap决定了。 更多cmap可以在这里找到:
Choosing Colormaps in Matplotlibmatplotlib.org![247cb364a68f11eaa1562db0efa976c7.png](https://i-blog.csdnimg.cn/blog_migrate/811b3e7ca25ff5b2f3ac6bffb8a8995d.png)
其实,cmap在这里只是帮我们显示图片,这个概念不是重点啦。
ax
的意思是不显示坐标轴,你可以注释掉这句话,再运行看看效果。
看到这里你可能觉得是这不是真正的图片,是matplotlib在搞什么不懂得鬼。那好,我们下面来动真格的啦。你可以用如下方式,利用cv2读入一张图片,用和上面一样的方法进行显示:
![80c608dd04e96513a5b3476d6d799fdd.png](https://i-blog.csdnimg.cn/blog_migrate/576ba1f7c25a207a173e32cdbcb5b131.jpeg)
然后我们再来看看image的值:
![8d1f19c3fdea7bf89299f443594c8cfa.png](https://i-blog.csdnimg.cn/blog_migrate/8f66ba1556c8ed65f9217c93a3f83d36.png)
是不是,有点感觉啦?我们再来看看image的维度信息:
image
会输出:(486, 720, 3)。所以这是一个486x720x3的矩阵,虽然是三维,但是本质上是一个二维,因为最后的3是表示红绿蓝三个分量的色彩信息。
如果你只给程序员说,有一个486x720x3的矩阵表示一个图像,那么他就知道,这是一张长为486像素,高为720像素的彩色图像。
关于色彩,说起来,又是一本书啦。我们有机会再探索。我们今天要实现的那个表情文字懂得灰度图就够啦。什么是灰度图?说白了就是黑白照片。来,我们操作一下,稍微修改一下上面的代码。
# 将读入模式设置成灰度grayscale
image = cv2.imread('galaxy.png',cv2.IMREAD_GRAYSCALE)
fig,ax = plt.subplots()
# cmap记得改为'gray',否则还是会用cmap映射成一种虚假的彩色,不过你可尝试,看看效果如何。
ax.imshow(image, cmap='gray')
ax.set_axis_off()
![af6a06b4e33ad6afd04553b2e51fcb55.png](https://i-blog.csdnimg.cn/blog_migrate/c0c3ac9b70ea6d34e6937367ed08ab9d.jpeg)
然后我们再看看image的维度信息:
image.shape
输出是(486, 720),看到了把,最后那个表示颜色的维度不见了。
为了对灰度图有更直观的认识,我们自己动手画一个吧。就画它:
![38d4cf9a913912645b3d8302ae900656.png](https://i-blog.csdnimg.cn/blog_migrate/4d00255fb407154962b32c58a9e530dc.png)
怎么画?我是程序员,我要写矩阵:
![623156d4074ec74752e9ef9acac56545.png](https://i-blog.csdnimg.cn/blog_migrate/4b878bc237138c03bf66dc22ab1f98ac.jpeg)
好了,矩阵写好了,我们把它拷贝到程序里:
# 程序员画的画,你不懂
img = [[1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1],
[1,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1],
[1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1],
[0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1],
[0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1],
[0,1,1,1,.5,1,1,1,1,.5,1,1,1,0,1,1,1],
[0,1,1,1,1,.5,.5,.5,.5,1,1,1,1,0,1,0,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1],
[0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1],
[0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1],
[0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1],
[0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1]]
# 显示出来你才懂
fig,ax = plt.subplots()
ax.imshow(img,cmap='gray')
ax.set_axis_off()
来运行一下, 看看效果:
![f2df8a6e3ae21db6270ebe9aa047046f.png](https://i-blog.csdnimg.cn/blog_migrate/aabd93be0195b622b8f93ce03c359922.jpeg)
不好意思,丑拒!
当然你还可以保存到本地,用来丑拒别人。
# 保存
# 乘以255的原因是png默认灰度最大值为255,也就是2^8-1
img = np.array(img) * 255
cv2.imwrite('too ugly to accept.png', img)
img是个14x17的矩阵,里面只有三种值,0,0.5,1。你会发现值越大,生成的像素越白(越亮),嘴巴是0.5,所以是介于黑白之间的灰色。这就是灰度的意义。
2.学以致用,我们来发微信表情吧
![21024b30f7b2e5fe84b9c21c0529e8e8.png](https://i-blog.csdnimg.cn/blog_migrate/62a6b28e089ef1762686798f8c52c928.jpeg)
仔细观察这个'表情阵列',联想一下我们刚学习的图片的知识。有没有什么发现?
嗯呐!如果你把'猪头'看成白色像素,'玫瑰’看成黑色像素。那他是不是变成了一个12x12的图片呀:
![2573167598b3367e5fa348eafaa7288b.png](https://i-blog.csdnimg.cn/blog_migrate/ab55ceddf7dfd19ef02b8f0866c4cfbb.png)
也就是一个12x12的矩阵嘛:
img_heart
好啦,现在有了这个矩阵,我们要做的就是把它换回去,换成微信的头像。
下面的这段代码实现这个功能,需要用到之前的知识(字符串,for循环等),请参看:
孙小白:#带你学Python# 从简单程序出发理解Python基本语法zhuanlan.zhihu.com![61e808be6b6eb7533406389ac1be1137.png](https://i-blog.csdnimg.cn/blog_migrate/2928e4203a6f17db0a2fa795a3fd8b1a.png)
# 空字符串,用于保存要发送的内容
/猪头,/玫瑰 这些都是微信表情的中文编码,也就是说你在聊天窗口打‘/猪头’然后发送,和你直接发猪头表情的效果是一样的。
你可以在这里查到更多的微信表情的中英文代码:
微信中的表情符号代码对照表 - 水车 - 博客园www.cnblogs.com![a880ef901c24bba4175a4cd789feafdd.png](https://i-blog.csdnimg.cn/blog_migrate/c991afd0bae4203011d55607f83e7ae4.jpeg)
运行代码:
![62fd543b60409d2adcd66f3a1b57ebf4.png](https://i-blog.csdnimg.cn/blog_migrate/04f8d9be1ce5e1bdda358871eb40ea7b.jpeg)
输出了一个很长的字符串,拷贝下来,发送给你的TA把(哈哈哈哈)。
【微信电脑版每一行是9个表情,所以会发生错乱,显示不正确的,要用手机看,手机是每行12个表情。为了手机党的方便,你可以翻到本文最后,我有分享几个生成好的,点赞之后,直接复制,就可以啦~】
3.进阶版,不画画啦,咱们写字~
先上代码:
# 放入你要写字
运行:
![fd2d71200bc92948a78d532a854c32a2.png](https://i-blog.csdnimg.cn/blog_migrate/f709b06e12efaa26369567838e962144.jpeg)
哈哈,得到我们想要的字啦。这段的核心代码是:
img_wechat
利用cv2自带的函数putText(),各个参数什么意思大家可以老方法help()去查看。这里给出简要解释:
- 原图像,就是在哪个图像上写字,这里给的是我们定义的白色背景图img_wechat
- 要写的字,这里用i遍历我们想要写的字列表['L', 'O', 'V', 'E']
- 所写字的左下角像素坐标,因为我们是竖着写的LOVE,每个字都写在一个width*width的图片上,所以每写完一个字,就要把坐标下移一个width,否则字就会重叠在一起。
- 字体,这里是cv2中定义好的
- 字体大小,0.5是经过尝试,比较合适的值
- 颜色,rgb的分量值,黑色,所以是(0,0,0)
- 字宽,这里给一个像素。你也可以自己改变观察效果。
这样其实就得到了我们需要的图片(程序中的矩阵),就像我们之前获得心型的图片一样。接下来就是把黑色(像素值为0)变成一个表情,白色(像素值为1)变成另一个表情,代码是一样的:
# 空字符串,用于保存要发送的内容
输出之后,直接复制就好啦。【为了手机党的方便,你可以翻到本文最后,我有分享几个生成好的,点赞之后,直接复制,就可以啦~】
4. 进进阶,任意图片的转换
如果你看到了好玩的图片,也想利用微信表情这样表达的话。这里提供一个思路。
# 提高代码的复用性,可以写个函数 (参考之前的文章哦)
这个的效果就不太好了。因为微信一行只有12个表情啊,精度太低。
![c233ebd22180c4ccf43d6c14922ac0a4.png](https://i-blog.csdnimg.cn/blog_migrate/0696008f71e355608f88214ffd7dfe66.png)
![eae881f17ff69025a03b5f11f8ba1361.png](https://i-blog.csdnimg.cn/blog_migrate/e2f3f038bd4aa70a1d7ec25b58ad9b7c.jpeg)
5. 文末福利:
可以直接复制哦,要用手机看,电脑端不行哦!
【1】LOVE
/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱
/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱
/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱
/拥抱/拥抱/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/玫瑰/拥抱/拥抱
![dae05664ffe5e9e82daff43965c29e95.png](https://i-blog.csdnimg.cn/blog_migrate/f87cb5f01229450a1237473c7185b240.jpeg)
![059234990977ddd64b9eb58ed18d5130.png](https://i-blog.csdnimg.cn/blog_migrate/7031b7409a70493756005caa010c980e.jpeg)
【2】爱心:
/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/玫瑰/拥抱/拥抱/拥抱/玫瑰/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/玫瑰/拥抱/玫瑰/拥抱/拥抱/玫瑰/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱/玫瑰/拥抱/拥抱/拥抱/拥抱/拥抱/拥抱
![b54cae77117d101a29c89167d4d8037f.png](https://i-blog.csdnimg.cn/blog_migrate/baffc0ad7cbb626c33e8cc871135ab9b.jpeg)
/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/玫瑰/玫瑰/猪头/猪头/猪头/玫瑰/玫瑰/猪头/猪头/猪头/猪头/玫瑰/猪头/猪头/玫瑰/猪头/玫瑰/猪头/猪头/玫瑰/猪头/猪头/玫瑰/猪头/猪头/猪头/猪头/玫瑰/猪头/猪头/猪头/猪头/玫瑰/猪头/玫瑰/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/玫瑰/猪头/玫瑰/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/玫瑰/猪头/猪头/玫瑰/猪头/猪头/猪头/猪头/猪头/猪头/猪头/玫瑰/猪头/猪头/猪头/猪头/玫瑰/猪头/猪头/猪头/猪头/猪头/玫瑰/猪头/猪头/猪头/猪头/猪头/猪头/玫瑰/猪头/猪头/猪头/玫瑰/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/玫瑰/猪头/玫瑰/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/猪头/玫瑰/猪头/猪头/猪头/猪头/猪头/猪头
![f53cbfc08e12fbad44ad84a989b58bd8.png](https://i-blog.csdnimg.cn/blog_migrate/caee9cfdf7511b84086f6189c5b490d5.jpeg)
哇! 写啦好久。 希望认真看的你,能够学到一些东西。
顺手点个赞。是我继续更新的动力!