我用Python造了一个词云。不过这次创建的是与图像颜色匹配的词云。
使用Python wordcloud模块创建一个词云。
掩码在wordcloud模块的WordCloud类的构造函数的参数中指定。掩码以ndarray格式指定。如果为像素指定了白色,它将被遮罩。
如果要使用彩色图像作为蒙版,您可以将其颜色作为彩色映射。
ImageColorGenerator
wordcloud类之一是ImageColorGenerator。就是词云颜色生成器(基于图片颜色)。
C = wordcloud.ImageColorGenerator(image, [default_color])
变量 | 类型 | 内容 |
---|---|---|
image | 数组 | 创建词云时使用的图像。 |
default_color | 元组 | 可选的。默认值为“None”。当画布尺寸大于为其创建颜色信息的图像时,指定颜色。(r,g,b) |
C | 指示画布颜色信息的对象。 |
将这个对象作为WordCloud类的结构化参数来传递。
尝试一下把图像linuxmi.com.jpg做成词云。
文本自己做一个吧,我这里使用linuxmi.com.txt
为蒙板读取的图像将直接用于蒙板和颜色信息。
将ImageColorGenerator创建的对象传递给WordCloud构造函数时,指定的参数为color_func。
然后是一个执行示例。
from PIL import Image
import numpy as np
from wordcloud import WordCloud, ImageColorGenerator
# 读取原始文本
with open('linuxmi.txt', mode='rt', encoding='utf-8') as fi:
source_text = fi.read()
# 创建蒙板图像
mask_array = np.array(Image.open('linuxmi.com.jpg'))
image_color = ImageColorGenerator(mask_array)
# 创建词云
wc = WordCloud(mask=mask_array, color_func=image_color, background_color='white').generate(source_text)
# 直接保存在文件中的情况下,用to_file方法
wc.to_file('linuxmi.com.png')
# 用PIL表示
#image_array = wc.to_array()
#img = Image.fromarray(image_array)
#img.show()
这是您输入的蒙版图像。
输出将如下所示。
看起来就像上图,OK,就这样。