之前一篇《文章》写了我是如何制作文章首图的,有访客推荐使用Figma,但我看了一圈,好复杂,还是PPT简单😂,所以我就想让我每次写好文章后,在后台直接生成一个设置好背景和基本文字的ppt,我直接下载回来改文字和加图片就制作好了首图,但我对操作ppt这块的编码并不熟悉,怎么办呢?
这里就有请到 ChatGPT 了!这个功能模块90%的代码都是 ChatGPT 写的,包括注释,我仅仅修改了部分以适配我的博客后台。
我这里的需求挺简单的,运行后生成一个带渐变色背景的PPT文件,其中包括两个文本框,一个是底部的站点名,另一个是预留的文章标题。
当然,我们不能直接这么问 ChatGPT,它目前根本无法理解过于宽泛和模糊的指令,你只能一步步引导它按照你的要求生成代码。
首先我让它生成一个斜角渐变的图片:
再让它添加一张照片到ppt并设置为全屏:
然后让它写一段生成ppt的代码,并且让他给这个ppt添加一些文本:
最后就需要我们人类出马了,将这些代码片段整合到一起,并且debug,最终交付使用。
我觉得这种编程体验真的是太赞了,虽然给出的代码并不是百分百可以直接使用的,但我们通过手动纠错或者告诉它,让它自己修复错误并给出正确答案。如果感兴趣,往下继续阅读有该功能的完整代码。
虽然时间久了会让人失去学习基础知识的兴趣,但既然已经有了打火机我何必要会钻木取火呢,对吧。
你需要安装以下两个包才可以运行这个demo。
pip3 install Pillow pip3 install python-pptx
from PIL import Image import random from pptx import Presentation from pptx.enum.shapes import MSO_SHAPE from pptx.util import Inches,Pt from pptx.dml.color import RGBColor import os # 厘米转英寸 def cm_to_in(cm): return Inches(cm / 2.54) # 一些渐变色组合 data = [((189,195,199),(44,62,80)), ((121,159,12),(172,187,120)), ((51,77,80),(203,202,165)), ((247,248,248),(172,187,120)), ((255,224,0),(121,159,12)), ((0,65,106),(228,229,230))] random_index = random.randrange(len(data)) # 生成一个随机索引 # 根据随机索引获取渐变色组合 random_data = data[random_index] def gradient_color(start_color, end_color, step): """ 生成从 start_color 到 end_color 的 step 种渐变色 """ start_r, start_g, start_b = start_color end_r, end_g, end_b = end_color r_step = (end_r - start_r) / step g_step = (end_g - start_g) / step b_step = (end_b - start_b) / step colors = [] for i in range(step): r = int(start_r + i * r_step) g = int(start_g + i * g_step) b = int(start_b + i * b_step) colors.append((r, g, b)) return colors def create_gradient_image(width, height, colors): """ 创建渐变色图片 """ img = Image.new('RGB', (width, height)) data = [] for y in range(height): for x in range(width): # 根据像素的位置计算出对应的颜色 ratio = (x + y) / (width + height) color_index = int(ratio * (len(colors) - 1)) color = colors[color_index] data.append(color) # 将数据写入图像 img.putdata(data) return img if __name__ == '__main__': # 渐变起始和结束颜色 start_color = random_data[0] # 红色 end_color = random_data[1] # 绿色 # 生成 256 种渐变色 step = 256 colors = gradient_color(start_color, end_color, step) # 创建渐变色图片 width, height = 1920, 1080 img = create_gradient_image(width, height, colors) # 保存图片 img.save('gradient.png') prs=Presentation() # 将Slide宽高比例设置为16:9 prs.slide_height = int(720/96 * 914400) prs.slide_width = int(1280/96 * 914400) blank_slide_layout=prs.slide_layouts[6] slide=prs.slides.add_slide(blank_slide_layout) slide.shapes.add_picture('gradient.png', 0, 0, prs.slide_width, prs.slide_height) #设置要新建的文本框的位置 left = top = width = height = Inches(1) #实例化一个文本框 txBox = slide.shapes.add_textbox(cm_to_in(14.76), cm_to_in(16.74), width, height) #设置文本框的类型 tf=txBox.text_frame p=tf.add_paragraph() p.text="tstrs.me" #设置新添加的段落文字的字号为40 p.font.color.rgb = RGBColor(255, 255, 255) # 字体颜色 p.font.name = '等线' # 字体名称 p.font.size=Pt(32) # 字体大小 #实例化另一个文本框 titletxBox = slide.shapes.add_textbox(cm_to_in(4.9), cm_to_in(4.27), width, height) #设置文本框的类型 titletf=titletxBox.text_frame title=titletf.add_paragraph() title.text="测试标题" title.font.bold = True # 设置粗体 title.font.color.rgb = RGBColor(255, 255, 255) # 字体颜色 title.font.name = '等线' # 字体名称 title.font.size=Pt(80) # 字体大小 current_dir = os.path.dirname(os.path.abspath(__file__)) pptx_filename = os.path.join(current_dir, "example.pptx") prs.save(pptx_filename) os.remove('gradient.png') print(f"Saved PPTX file: {pptx_filename}")
批量复制文件的批处理脚本思路
要想实现这样的效果仅仅只需要安装一个lonelyscreen就就可以了。
本文的主要内容是搭建V2ray,并且为其启用锐速(ServerSpeeder)。
非常好用,至少目前可以满速下载。百兆宽带10M/s下载速度,已经很满足了。
解决 依赖未满足 的问题
目录
热门标签
页面
更多语言
站点信息