在58或者赶集等一些网站上经常看到手机号是图片格式,或者一些网站的验证码。这些都是动态生成的,今天我们来看一下如何用python把文字生成图片。其实今天主要借助pygame的图像渲染模块,这样比较简单,顺便帮大家复习下pygame这个游戏框架。好啦,直接上代码吧。
环境:python2.7,装有python3的同学也可以测试一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#coding: UTF-8
#载入必要的模块
import os
import pygame
from pygame.locals import *
#pygame初始化
pygame.init()
text = u"PythonTab中文网"
#设置字体和字号
font = pygame.font.SysFont('Microsoft YaHei', 64)
#渲染图片,设置背景颜色和字体样式,前面的颜色是字体颜色
ftext = font.render(text, True, (65, 83, 130),(255, 255, 255))
#保存图片
pygame.image.save(ftext, "D:/pythontab.jpg")#图片保存地址
|
注意:如果要生成中文其中的字体设置中,要设置支持中文的字体。不然会生成乱码
#!/usr/local/bin/python3 #coding=gbk import os, io, sys, re, time, json, random from PIL import Image, ImageEnhance, ImageFilter def watermark(img_source, img_water, img_new, offset_x, offset_y): try: im = Image.open(img_source) wm = Image.open(img_water) layer = Image.new('RGBA', im.size, (0,0,0,0)) layer.paste(wm, (im.size[0] - offset_x, im.size[1] - offset_y)) newIm = Image.composite(layer, im, layer) newIm.save(img_new) except Exception as e: print(">>>>>>>>>>> WaterMark EXCEPTION: " + str(e)) return False else: return True def main(): watermark("original.jpg", "watermark.png", "afterwater.jpg", 250, 50) if __name__ == '__main__': main()
原图:
水印:
添加水印后: