Python生成透明背景图片

转载请注明出处:http://blog.csdn.net/jinixin/article/details/79115782


关于画图,Python不乏许多优秀的第三方库能支持操作图片,比如Matplotlib、Pillow等。这些库可以对给定图片做各种各样的修饰,甚至是直接创建新图片。今天我就尝试用Pillow来制作一张透明背景的图片,并在图片上写一句话。



模块


在画图过程中,我主要使用了Pillow的Image、ImageDraw、ImageFont三个模块,下面对它们简单介绍:

Image:构建一个image对象,你可以通过new或是从现有文件中加载来创建它

ImageDraw:为image对象提供简单的平面图形。我把它理解成画笔,可以操作它在image对象上加线条,加文字等

ImageFont:设置字体的属性。由于使用到绘文字,所以需使用该模块对字体做些调整


扫描二维码关注公众号,回复: 127325 查看本文章

直接上代码:

#!/usr/bin/env python
# coding=utf-8

from PIL import Image, ImageDraw, ImageFont

image = Image.new(mode='RGBA', size=(400, 50))
draw_table = ImageDraw.Draw(im=image)
draw_table.text(xy=(0, 0), text=u'仰起脸笑得像满月', fill='#008B8B', font=ImageFont.truetype('./SimHei.ttf', 50))

image.show()  # 直接显示图片
image.save('满月.png', 'PNG')  # 保存在当前路径下,格式为PNG
image.close()

运行代码,便能看到生成的图片。其中SimHei字体文件我上传到了百度云,提取码“4uhw”,点击这里下载。如果你介意生成的透明背景图上面的文字带有深色轮廓,可以看这篇文章去除。



方法


代码不是很长,下面简单解释代码中用到的几个方法:

1)PIL.Image.new(mode, size, color=0)

通过给定的mode创建指定大小的image对象

mode参数:定义了图像中关于像素的一些属性。比较常见的有:黑白图像L,真彩色RGB,带透明度的真彩色RGBA等,具体看这里

size参数:以像素为单位指定图片的长与宽,tuple形式

color参数:指定图片的背景色。当图像模式为RGBA时,若不指定该参数,默认便是透明背景


2)PIL.ImageDraw.Draw(im, mode=None)

创建一个对象用于在image对象上进行作画

im参数:已创建的image对象

mode参数:定义了图像中关于像素的一些属性。若未给定,将与传入的image对象的mode参数保持一致


3)PIL.ImageDraw.ImageDraw.text(xy, text, fill=None, font=None, direction=None)

在图片指定位置写一行文本,多行文本需要使用multiline_text方法

xy参数:指定文本距左上角的位置,tuple形式

text参数:文本内容

fill参数:文本颜色,支持英文单词与十六进制表示法

font参数:字体对象,一般通过ImageFont模块构建,用于指定字体文件位置与字体大小

direction参数:文本内容方向,需要libraqm支持

(该方法还有其他参数,具体请点击这里



参考资料:

Pillow 4.2 文档



文中如有不当之处,还望大家包容和指出,感谢


猜你喜欢

转载自blog.csdn.net/jinixin/article/details/79115782