社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python生成自己专属的手机春节壁纸

Crossin的编程教室 • 4 年前 • 409 次点击  
大家好,欢迎来到 Crossin的编程教室 !


马上就要过年了,要不要换一个喜气洋洋、洋洋洒洒、洒扫应对、对牛弹琴的手机壁纸呢?


今天就来给大家表演一个节目:

用Python生成自己独一无二的手机壁纸


首先我们需要选择一个现成的手机壁纸作为模板,我选择了这种以自己姓氏为主题的专属手机壁纸。

<>

这其实是个之前迎接跨年的手机壁纸,先利用ps将图片中的2020和其他文字去除。



尝试给图片添加文字,这里用到的是 PIL(Python Image Library),它是python的第三方图像处理库。 

Image类是PIL中的核心类,有很多种方式来对它进行初始化,比如从文件中加载一张图像,处理其他形式的图像,或者是从头创造一张图像等。


下面是本文涉及的一些PIL Image类中常用的方法:


  • save(filename,format) (保存指定格式的图像)

  • open(filename,mode) (打开一张图像)。

  • paste(region,box,mask) (将一个图像粘贴到另一个图像)


先拿最简单的字体(黑体)尝试吧。

from PIL import Image,ImageDraw,ImageFont

a = '小王小王'
font = ImageFont.truetype('simhei.ttf', 100) # 定义文本,黑体
img = Image.open('底图.png')
draw = ImageDraw.Draw(img) # 新建画布绘画对象

draw.text((200,700),a,(0,0,0),font=font)
#在新建的对象上坐标(200,700)处开始画出黑色文本
img.show()
img.save('壁纸.png')

运行:



可以可以,第一步是这个意思,不过就是有点丑。


下面开始尝试将文字倾斜。


结果没有找到比较好的方法,搜索得到的结论是文字倾斜,不如将图片倾斜。


于是我打算利用rotate旋转代码来旋转图片,以达到倾斜的效果。

from PIL import Image,ImageDraw,ImageFont

a = '小王小王'
font = ImageFont.truetype('simhei.ttf', 100) # 定义文本
img = Image.open('底图.png')
img=img.rotate(-15) #旋转代码
draw = ImageDraw.Draw(img) # 新建画布绘画对象

draw.text((200,700),a,(0,0,0),font=font)
#在新建的对象上坐标(200,700)处开始画出黑色文本
img.show()
img.save('壁纸.png')

运行:



额,是倾斜了


不过不是这个效果



是那种很漂亮的,倾斜字体


冥思苦想,


想到将文字写在一个透明的图片上,然后旋转这个图片后,将图片覆盖到有底色的底图上。


不知道大家看懂了吗,直接尝试一下吧。


其中img1是透明底的图片,img2是有底色的底图

from PIL import Image,ImageDraw,ImageFont

a = '小王小王' # 定义文本
b = '可爱大王'
font = ImageFont.truetype('hylx.ttf', 180)
img1 = Image.open('透明.png')
img1=img1.convert('RGBA')
draw = ImageDraw.Draw(img1) # 新建画布绘画对象
draw.text((250,550), a,(255,243,211),font=font)
draw.text((350,800), b,(255,243,211),font=font)

img1=img1.rotate(15) #旋转代码

img2 = Image.open('底图.png')
img2=img2.convert('RGBA')

img2.paste(img1,(0,0),img1) # 将img1粘贴到img2上
img2.show()
img2.save('壁纸.png')

运行:



对对对,就是这种半人半鱼的效果。


在手机上简单测试一下效果吧



看起来很喜庆嘛!


很简单的一小脚本,大家喜欢的话也可以尝试一下,更换字体和模板底图,加入自己的个性元素!


获取代码和文件,请在公众号内回复关键字:壁纸


如果文章对你有帮助,欢迎转发/点赞/收藏~


作者:朱小五

源:凹凸数据



_往期文章推荐_

用Python实现一个简单的微信红包算法




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/126519