中型网站流量wordpress 小程序 教程

张小明 2026/1/8 5:28:27
中型网站流量,wordpress 小程序 教程,免费制作软件的网站,厦门建设网站的图片转 ppt#xff0c;实现可编辑效果演示完整代码更复杂的图形icon针对图标的新版本效果演示 输出后#xff1a; 只需要手动修订一下箭头了#xff0c;工作量减少了#xff0c;不用自己纯手打#xff08;2小时#xff09; 完整代码 大模型只能选用 gemini-3-pro-previe…图片转 ppt实现可编辑效果演示完整代码更复杂的图形icon针对图标的新版本效果演示输出后只需要手动修订一下箭头了工作量减少了不用自己纯手打2小时完整代码大模型只能选用 gemini-3-pro-previewqwen 是不行的#!/usr/bin/env python3 图片转PPTX v3 - 增强精确版 改进点 1. 两步法先OCR提取文字再生成布局 2. 强制安全边距约束 3. 支持切换模型 使用方法 python image_to_pptx_v3.py input_image.png -o output.pptx python image_to_pptx_v3.py input_image.png -o output.pptx --model gemini-3-pro-preview-thinking importosimportsysimportbase64importargparseimporttempfileimportsubprocessimportrequestsimportjsonimportrefrompathlibimportPath# # 配置# # 默认API配置DEFAULT_BASE_URLhttps://api.vectorengine.ai/v1DEFAULT_API_KEYsk-m# 固定使用的模型DEFAULT_MODELgemini-3-pro-preview# 幻灯片安全边距配置英寸SLIDE_WIDTH13.333SLIDE_HEIGHT7.5SAFE_MARGIN_LEFT0.3SAFE_MARGIN_RIGHT0.3SAFE_MARGIN_TOP0.3SAFE_MARGIN_BOTTOM0.3SAFE_WIDTHSLIDE_WIDTH-SAFE_MARGIN_LEFT-SAFE_MARGIN_RIGHT# 12.733SAFE_HEIGHTSLIDE_HEIGHT-SAFE_MARGIN_TOP-SAFE_MARGIN_BOTTOM# 6.9# # PPTX 模板代码# PPTX_TEMPLATE from pptx import Presentation from pptx.util import Inches, Pt, Emu from pptx.dml.color import RGBColor from pptx.enum.text import PP_ALIGN, MSO_ANCHOR from pptx.enum.shapes import MSO_SHAPE from pptx.enum.dml import MSO_LINE_DASH_STYLE # 幻灯片尺寸 SLIDE_WIDTH 13.333 SLIDE_HEIGHT 7.5 # 安全边距 SAFE_LEFT 0.3 SAFE_RIGHT 13.033 # 13.333 - 0.3 SAFE_TOP 0.3 SAFE_BOTTOM 7.2 # 7.5 - 0.3 # 创建演示文稿 (16:9) prs Presentation() prs.slide_width Inches(SLIDE_WIDTH) prs.slide_height Inches(SLIDE_HEIGHT) # 添加空白幻灯片 slide prs.slides.add_slide(prs.slide_layouts[6]) def clamp_x(x, width0): 确保X坐标在安全范围内 x max(SAFE_LEFT, x) if x width SAFE_RIGHT: x SAFE_RIGHT - width return max(SAFE_LEFT, x) def clamp_y(y, height0): 确保Y坐标在安全范围内 y max(SAFE_TOP, y) if y height SAFE_BOTTOM: y SAFE_BOTTOM - height return max(SAFE_TOP, y) def parse_color(color): 解析颜色值支持带#和不带#的格式 if not color: return RGBColor(0, 0, 0) color str(color).strip().lstrip(#) if len(color) 6: return RGBColor(int(color[0:2], 16), int(color[2:4], 16), int(color[4:6], 16)) return RGBColor(0, 0, 0) def add_text_box(slide, text, left, top, width, height, font_size12, boldFalse, color000000, aligncenter, font_nameArial): 添加文本框带边界检查 left clamp_x(left, width) top clamp_y(top, height) textbox slide.shapes.add_textbox(Inches(left), Inches(top), Inches(width), Inches(height)) tf textbox.text_frame tf.word_wrap True p tf.paragraphs[0] p.text text p.font.size Pt(font_size) p.font.bold bold p.font.name font_name p.font.color.rgb parse_color(color) if align center: p.alignment PP_ALIGN.CENTER elif align left: p.alignment PP_ALIGN.LEFT elif align right: p.alignment PP_ALIGN.RIGHT return textbox def add_rect(slide, left, top, width, height, fill_colorNone, border_colorNone, border_width1, textNone, text_colorFFFFFF, font_size10, corner_radius0, boldFalse, font_nameArial): 添加矩形带边界检查 left clamp_x(left, width) top clamp_y(top, height) if corner_radius 0: shape slide.shapes.add_shape(MSO_SHAPE.ROUNDED_RECTANGLE, Inches(left), Inches(top), Inches(width), Inches(height)) else: shape slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(left), Inches(top), Inches(width), Inches(height)) if fill_color: shape.fill.solid() shape.fill.fore_color.rgb parse_color(fill_color) else: shape.fill.background() if border_color: shape.line.color.rgb parse_color(border_color) shape.line.width Pt(border_width) else: shape.line.fill.background() if text: tf shape.text_frame tf.word_wrap True p tf.paragraphs[0] p.text text p.font.size Pt(font_size) p.font.bold bold p.font.name font_name p.font.color.rgb parse_color(text_color) p.alignment PP_ALIGN.CENTER tf.anchor MSO_ANCHOR.MIDDLE return shape def add_line(slide, start_x, start_y, end_x, end_y, color000000, width1, dashedFalse): 添加直线带边界检查 start_x clamp_x(start_x) end_x clamp_x(end_x) start_y clamp_y(start_y) end_y clamp_y(end_y) connector slide.shapes.add_connector( 1, Inches(start_x), Inches(start_y), Inches(end_x), Inches(end_y) ) connector.line.color.rgb parse_color(color) connector.line.width Pt(width) if dashed: connector.line.dash_style MSO_LINE_DASH_STYLE.DASH return connector def add_arrow(slide, start_x, start_y, end_x, end_y, color000000, width1.5): 添加箭头带边界检查- 使用带箭头端点的线条 start_x clamp_x(start_x) end_x clamp_x(end_x) start_y clamp_y(start_y) end_y clamp_y(end_y) line slide.shapes.add_connector( 1, Inches(start_x), Inches(start_y), Inches(end_x), Inches(end_y) ) line.line.color.rgb parse_color(color) line.line.width Pt(width) # 尝试添加箭头头部 try: from pptx.oxml.ns import qn from lxml import etree spPr line._element.find(qn(p:spPr)) if spPr is not None: ln spPr.find(qn(a:ln)) if ln is not None: tailEnd etree.SubElement(ln, qn(a:tailEnd)) tailEnd.set(type, triangle) tailEnd.set(w, med) tailEnd.set(len, med) except: pass return line # 以下是AI生成的绘图代码 defencode_image_to_base64(image_path:str)-str:withopen(image_path,rb)asf:returnbase64.b64encode(f.read()).decode(utf-8)defget_image_mime_type(image_path:str)-str:extPath(image_path).suffix.lower()mime_map{.png:image/png,.jpg:image/jpeg,.jpeg:image/jpeg,.gif:image/gif,.webp:image/webp}returnmime_map.get(ext,image/png)defcall_api(base_url:str,api_key:str,model:str,messages:list,max_tokens:int8000)-str:调用APIheaders{Authorization:fBearer{api_key},Content-Type:application/json}payload{model:model,messages:messages,temperature:0.1,max_tokens:max_tokens}responserequests.post(f{base_url}/chat/completions,headersheaders,jsonpayload,timeout600)ifresponse.status_code!200:print(f❌ API调用失败:{response.status_code})print(response.text)sys.exit(1)resultresponse.json()returnresult[choices][0][message][content]defstep1_extract_content(base_url:str,api_key:str,model:str,image_path:str)-dict: Step 1: 精确提取图片中的所有文字内容和结构 base64_imageencode_image_to_base64(image_path)mime_typeget_image_mime_type(image_path)system_prompt你是一个专业的OCR和图表分析专家。仔细分析用户提供的图片精确提取所有内容。 ## 任务 分析这张图片可能是流程图、服务蓝图、PPT等提取 1. 所有文字内容一字不差 2. 元素的相对位置关系 3. 颜色信息 4. 连接线/箭头的逻辑关系 ## 输出格式JSON json { title: 图片标题, type: service_blueprint / flowchart / presentation / other, structure: { rows: [ { row_name: 行名称如 Physical Evidence, row_index: 0, color: 主要颜色十六进制, items: [ {text: 完整文字, column: 0}, {text: 完整文字, column: 1} ] } ], total_columns: 13, divider_lines: [Line of interaction, Line of visibility] }, connections: [ {from: 元素A, to: 元素B, type: arrow/line} ] } \ ## 关键规则 1. **文字必须100%准确**不要猜测、简化或遗漏任何文字 2. **保留换行**多行文字用\\n分隔 3. **颜色准确**用十六进制表示如 #5DADE2 4. **结构清晰**标注每个元素所在的行号和列号 只输出JSON不要其他内容。user_content[{type:text,text:请精确分析这张图片提取所有文字内容和结构信息。文字必须100%准确不要遗漏任何内容。},{type:image_url,image_url:{url:fdata:{mime_type};base64,{base64_image}}}]print( Step 1: 正在精确提取图片内容...)contentcall_api(base_url,api_key,model,[{role:system,content:system_prompt},{role:user,content:user_content}],max_tokens8000)# 清理JSONifjsonincontent:contentcontent.split(json)[1].split()[0]elifincontent:contentcontent.split()[1].split()[0]try:returnjson.loads(content.strip())exceptjson.JSONDecodeError:print(⚠️ JSON解析失败返回原始内容)return{raw_content:content}defstep2_generate_code(base_url:str,api_key:str,model:str,image_path:str,extracted_content:dict)-str: Step 2: 基于提取的内容生成PPTX代码 base64_imageencode_image_to_base64(image_path)mime_typeget_image_mime_type(image_path)system_promptf你是一个专业的PPT开发工程师。根据提取的内容信息和原图生成python-pptx代码来1:1还原图片。 ## 幻灯片安全区域必须遵守 - 幻灯片尺寸:{SLIDE_WIDTH}x{SLIDE_HEIGHT}英寸 - 左边距:{SAFE_MARGIN_LEFT}英寸内容不能小于此值 - 右边距: 内容X坐标宽度 不能超过{SLIDE_WIDTH-SAFE_MARGIN_RIGHT}英寸 - 上边距:{SAFE_MARGIN_TOP}英寸 - 下边距: 内容Y坐标高度 不能超过{SLIDE_HEIGHT-SAFE_MARGIN_BOTTOM}英寸 ## 可用区域计算 - 有效宽度:{SAFE_WIDTH:.2f}英寸 - 有效高度:{SAFE_HEIGHT:.2f}英寸 - 如果有13列元素每列宽度约:{SAFE_WIDTH/13:.3f}英寸 ## 可用的辅助函数只能使用这4个已在模板中定义好不要重新定义 1. add_text_box(slide, text, left, top, width, height, font_size12, boldFalse, color000000, aligncenter) 2. add_rect(slide, left, top, width, height, fill_colorNone, border_colorNone, textNone, text_colorFFFFFF, font_size10) 3. add_line(slide, start_x, start_y, end_x, end_y, color000000, width1, dashedFalse) 4. add_arrow(slide, start_x, start_y, end_x, end_y, color000000, width1.5) ## 禁止事项非常重要 - **禁止定义任何函数**def xxx: - **禁止导入任何模块**import xxx - **禁止使用pptx库的其他API** - 只能直接调用上面4个函数和使用变量 slide, prs ## 关键规则必须遵守 ### 规则1边界安全 - 所有内容必须在安全区域内不能超出边界 ### 规则2文字准确 - 文字必须与提取的内容完全一致 ### 规则3连线和箭头非常重要 - **必须绘制所有的连接线和箭头** - 观察原图中方框之间的连线用 add_line() 或 add_arrow() 绘制 - 垂直连线连接上下方框 - 水平连线连接左右方框 - 虚线分隔线用 add_line(..., dashedTrue) 绘制泳道分隔线 - 箭头方向注意箭头指向从哪到哪 ### 规则4绘制顺序 1. 先画背景 2. 再画所有矩形方框 3. 再画虚线分隔线Line of interaction等 4. 最后画所有连接线和箭头 ## 已提取的内容{json.dumps(extracted_content,ensure_asciiFalse,indent2)}## 输出格式 只输出Python代码。 重要代码末尾必须使用这一行保存文件不要改变 prs.save(OUTPUT_PATH) 不要使用任何未定义的函数。只能使用: add_text_box, add_rect, add_line, add_arrowuser_content[{type:text,text:根据上面提取的内容和这张原图生成python-pptx代码。确保所有内容都在安全边距内不要超出边界。},{type:image_url,image_url:{url:fdata:{mime_type};base64,{base64_image}}}]print( Step 2: 正在生成PPTX代码...)codecall_api(base_url,api_key,model,[{role:system,content:system_prompt},{role:user,content:user_content}],max_tokens16000)# 清理markdown代码块ifpythonincode:codecode.split(python)[1].split()[0]elifincode:codecode.split()[1].split()[0]returncode.strip()defmain():parserargparse.ArgumentParser(description图片转PPTX v3 - 增强精确版使用 gemini-3-pro-preview 模型,formatter_classargparse.RawDescriptionHelpFormatter)parser.add_argument(input,help输入图片文件)parser.add_argument(-o,--output,defaultoutput.pptx,help输出PPTX文件)parser.add_argument(--api-key,helpAPI Key)parser.add_argument(--show-content,actionstore_true,help显示提取的内容)parser.add_argument(--show-code,actionstore_true,help显示生成的代码)argsparser.parse_args()api_keyargs.api_keyorDEFAULT_API_KEY base_urlDEFAULT_BASE_URL modelDEFAULT_MODELifnotPath(args.input).exists():print(f❌ 文件不存在:{args.input})sys.exit(1)print(f\n 图片转PPTX v3 - 增强精确版)print(f{*50})print(f输入:{args.input})print(f输出:{args.output})print(f模型:{model})print(f安全区域:{SAFE_MARGIN_LEFT}~{SLIDE_WIDTH-SAFE_MARGIN_RIGHT}x{SAFE_MARGIN_TOP}~{SLIDE_HEIGHT-SAFE_MARGIN_BOTTOM})print(f{*50}\n)# Step 1: 提取内容extracted_contentstep1_extract_content(base_url,api_key,model,args.input)ifargs.show_content:print(\n 提取的内容:)print(-*50)print(json.dumps(extracted_content,ensure_asciiFalse,indent2))print(-*50)# Step 2: 生成代码generated_codestep2_generate_code(base_url,api_key,model,args.input,extracted_content)ifargs.show_code:print(\n 生成的代码:)print(-*50)print(generated_code)print(-*50)# 组合完整代码full_codePPTX_TEMPLATEgenerated_code# 修复 OUTPUT_PATH 问题# 替换各种可能的写法full_codefull_code.replace(prs.save(OUTPUT_PATH),fprs.save({args.output}))full_codefull_code.replace(prs.save(OUTPUT_PATH),fprs.save({args.output}))# 如果AI直接写了具体文件名也替换掉full_codere.sub(rprs\.save\([\][^\][\]\),fprs.save({args.output}),full_code)# 确保末尾有保存语句ifprs.save(notinfull_code:full_codef\nprs.save({args.output})# 写入临时文件并执行withtempfile.NamedTemporaryFile(modew,suffix.py,deleteFalse,encodingutf-8)asf:f.write(full_code)temp_filef.nameprint(\n 正在生成PPTX...)try:resultsubprocess.run([sys.executable,temp_file],capture_outputTrue,textTrue,cwdstr(Path(args.output).parent.absolute())ifPath(args.output).parent.exists()else.)ifresult.returncode0:print(f\n✅ 成功PPTX已保存:{args.output})else:print(f\n❌ 生成失败:)print(result.stderr)debug_filedebug_pptx_code.pywithopen(debug_file,w,encodingutf-8)asf:f.write(full_code)print(f\n 代码已保存到{debug_file}供调试)finally:os.unlink(temp_file)if__name____main__:main()更复杂的图形icon上面代码的输出针对图标的新版本新版本输出文字和结构生成是 gemini-3-pro-preview图标生成是gemini-3-pro-image-preview但这个图的生成结果感觉和原图还是有差距。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

专业公司做网站我想自己创建购物网站

软件外包与人才服务型上市公司设计资金管理平台,需结合行业特性(项目制、人力成本为主、多客户结算、周期性收款等)和上市公司合规要求。以下是一个系统化的设计框架:一、核心目标资金可视化管理:实时监控现金流、账户…

张小明 2026/1/8 1:05:10 网站建设

学校网站模板设计怎么制作公众号链接

glogg:5个技巧让日志分析变得简单高效 【免费下载链接】glogg A fast, advanced log explorer. 项目地址: https://gitcode.com/gh_mirrors/gl/glogg glogg是一款专为开发者和系统管理员设计的快速智能日志查看器,基于Qt框架开发,提供…

张小明 2026/1/8 1:05:08 网站建设

广告公关公司焦作网站seo

Struts框架中的OGNL表达式语言是其核心特性之一,它提供了强大的数据绑定和访问能力。理解OGNL的工作原理、安全边界以及在实际开发中的正确用法,对于构建健壮、安全的Struts2应用至关重要。如果对其机制认识模糊或使用不当,往往会引入严重的安…

张小明 2026/1/8 1:05:14 网站建设

福田做网站vps怎么建多个网站

simulink仿真模型,同步电机死区补偿,自适应补偿,图一前面开了补偿,后面关了补偿,可以看到零点电流平滑了,实测噪声好很多,低速性能不错。为matlab2018版本。这个死区补偿的坑我蹲了半个月&#…

张小明 2026/1/8 1:06:57 网站建设

做推广的网站微信号网络教学平台北师珠

目录 1 基础优化技巧 2 中级技巧 3 高级技巧 4 实用模板 5 最佳实践 在与AI结对编程的过程中,优秀的 Prompt 设计是充分发挥 AI 能力的关键。本文将分享一些开发中实用的 Prompt 优化技巧,帮助开发者更高效地与 AI 协作。 喜欢本文记得收藏、关注、点赞。…

张小明 2026/1/8 1:06:19 网站建设

网站平台建设策划婚庆公司收费标准价目一览表

每天坐在工位上,最让人崩溃的不是活儿多,而是工具不给力。今天不讲废话,直接给大家整理了5个真正实用又免费的职场必备软件工具。这些软件工具我亲测好用!1. 万彩办公大师:一个顶60个的“百宝箱”很多人的电脑里塞满了…

张小明 2026/1/7 12:37:17 网站建设