| |
| |
| |
| |
| import os |
| import jieba |
| from wordcloud import WordCloud |
| from imageio import imread |
| |
| |
| class Generator: |
| def __init__(self, words, stopwords, color, font, image=None): |
| super(Generator, self).__init__() |
| self.words = words |
| self.stopwords = stopwords |
| self.color = color |
| self.font = font |
| self.image = image |
| |
| def generate(self): |
| with open(self.stopwords, encoding='utf-8') as f_stop: |
| f_stop_text = f_stop.read() |
| f_stop_seg_list = f_stop_text.splitlines() |
| |
| |
| text = open(self.words, encoding='utf-8').read() |
| |
| seg_list = jieba.cut(text, cut_all=False) |
| |
| |
| my_word_list = [] |
| |
| for my_word in seg_list: |
| if len(my_word.strip()) > 1 and not (my_word.strip() in f_stop_seg_list): |
| my_word_list.append(my_word) |
| |
| my_word_str = ' '.join(my_word_list) |
| |
| |
| font_path = self.font |
| |
| if self.image: |
| wc = WordCloud( |
| font_path=font_path, |
| background_color=self.color, |
| mask=imread(self.image), |
| ) |
| else: |
| wc = WordCloud( |
| font_path=font_path, |
| background_color=self.color, |
| random_state=1024, |
| width=1920, |
| height=1080, |
| ) |
| try: |
| wc.generate(my_word_str) |
| wc.to_file('images/output.png') |
| except Exception as e: |
| print(e) |
| |
| |
| if __name__ == '__main__': |
| path = os.getcwd() |
| image_generator = Generator(words="./input.txt", |
| stopwords="./stopwords.txt", |
| font="./SourceHanSansCN-Bold.otf", |
| color="black", |
| image="./shape.jpg") |
| image_generator.generate() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南