在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()
原图:

水印:

添加水印后:
