From ba0335f78a363a98b723004880635a84f0f95f7b Mon Sep 17 00:00:00 2001 From: cherish Date: Mon, 3 Apr 2017 21:51:41 +0800 Subject: [PATCH 1/3] Update GroupTagCloud.py Add wordCloud mask option --- GroupTagCloud.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/GroupTagCloud.py b/GroupTagCloud.py index 9126958..5bf2335 100644 --- a/GroupTagCloud.py +++ b/GroupTagCloud.py @@ -12,17 +12,23 @@ import time import logging import jieba +import numpy as np +from PIL import Image class GroupTagCloud(ProcessInterface): recordMaxNum = 500 maxFrequency = 40 imgDir = 'TagCloud' - def __init__(self, fontPath): + def __init__(self, fontPath, maskPath = None): self.client = MongoClient() self.coll = self.client[dbName][collName] self.fontPath = fontPath - self.wordCloud = WordCloud(font_path=self.fontPath, width=400, height=400, max_words=100) + if maskPath is None: + self.wordCloud = WordCloud(font_path=self.fontPath, width=400, height=400, max_words=100) + else: + self.mask = np.array(Image.open(maskPath)) + self.wordCloud = WordCloud(font_path=self.fontPath, mask=self.mask, max_words=100) if not os.path.exists(self.imgDir): os.mkdir(self.imgDir) logging.info('GroupTagCloud connected to MongoDB.') From 2a2e79b529372b8fce38e6ef6e2dfdff24a8b9e9 Mon Sep 17 00:00:00 2001 From: cherish Date: Mon, 3 Apr 2017 13:59:46 +0000 Subject: [PATCH 2/3] Add files via upload add a mask img example --- girl.png | Bin 0 -> 58128 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 girl.png diff --git a/girl.png b/girl.png new file mode 100644 index 0000000000000000000000000000000000000000..18312a93915729a34b470afe074167b432d7856b GIT binary patch literal 58128 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 Date: Mon, 3 Apr 2017 22:01:38 +0800 Subject: [PATCH 3/3] Update main.py add the mask param to GroupTagCloud --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 844a9b4..df8dd4a 100644 --- a/main.py +++ b/main.py @@ -22,7 +22,7 @@ GlobalTextHook({ '^ding$': 'dong', '鸭哥': '嘎?' }), PaiDuiHook(), HistoryRecorder(), - GroupTagCloud('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc'), + GroupTagCloud('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc','girl.png'), ActivityInfo('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc'), GroupMessageForwarder([ '二群', '三群' ], [ 'AI二群测试中', 'AI三群测试' ]) ]