python好玩的代码-一个有意思的 Python 训练项目集

逛 GitHub 的时候,发现了一个很酷的 Python 训练项目集。一共有 25 个题目,基本涵盖了用 Python 实现的各种功能。

上一周没有复习 C++ 和网络通信全部用来玩这几个题了。题目地址在 –> GitHub | Dumb Ways To Code

现在已经通过各种办法,解决了 0000 ~ 0007 还有一个 0010 这些题目。

今天先来总结一下第 0000 题目的思路。

面向 Google, CSDN, StackOverflow 编程。

一周目的问题 Solutions | PIL or Pillow

第一天遇到的问题是这样的:

【第 0000 题】

将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。(类似于图中效果)

162G44636-0.jpg

问题分解为:

加载图片

识别图片大小

识别字体文件 TrueType

将文本加到图片右上角并保存

在 PIL 中有 Image, ImageFont, ImageDraw 这三个对象,分别用来实现:

Image: 加载原始图片并将其转换为对象 Object

ImageFont: 加载字体文件

ImageDraw: 将字符添加到图片对象上

Talk is cheap, show me the code.

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

from PIL import Image, ImageDraw, ImageFont

def add_unread_count(img):

draw = ImageDraw.Draw(img)

width, height = img.size

textSize = int(width*0.15)

textColor = '#CB1B45'

textFont = ImageFont.truetype('Arial.ttf', textSize)

draw.text((width*0.8, height*0.02), '99', font=textFont, fill=textColor)

img.save('icon_added.jpg', 'jpeg')

def main():

img = Image.open('icon.jpg')

add_unread_count(img)

if __name__ == '__main__':

main()

代码中:

add_unread_count() 是添加 "99’ 字样的主函数,参数为图片对象 img.

draw = ImageDraw.Draw(img) 将图片对象 img 导入并成为图层背景,我叫它 canvas.

然后 width, height = img.size 确定背景底照的长宽。

ImageFont.truetype('Arial.ttf', textSize) 将字体文件 Arial.ttf 导入并在下一步绘制文本图层时使用。

draw.text((width*0.8, height*0.02), '99', font=textFont, fill=textColor) 将文本 "99’ 绘制到图片右上角。

最后保存图片文件:img.save('icon_added.jpg', 'jpeg')

Reference

参考了 Python 官方文档 PIL 相关使用。

参考了 这个 Repo 里面 大佬们的思路。

面向 Google 和 StackOverflow 编程成功。

?Spencer Woo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值