ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ppt-master 图像工具链实战:AI 生图、网络搜图、位图派生与来源溯源全流程

2026/9/10 15:51:17 拓冰建站 浏览量
ppt-master 图像工具链实战:AI 生图、网络搜图、位图派生与来源溯源全流程 ppt-master 图像工具链实战AI 生图、网络搜图、位图派生与来源溯源全流程【免费下载链接】ppt-masterAI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations,>项目地址: https://gitcode.com/GitHub_Trending/ppt/ppt-master本文基于 ppt-master 仓库中skills/ppt-master/scripts/docs/image.md工具文档展开覆盖该技能内置的图像管线全貌image_gen.py的多后端 AI 生成、image_search.py的零配置网络搜图与版权溯源、image_treat.py的非破坏性位图派生、analyze_images.py的客观事实盘点以及gemini_watermark_remover.py的水印清理。读完本文你能够独立完成从密钥配置、批量生图/搜图、派生图制作到来源清单provenance维护的完整实操并理解每个工具在 SVG 创作与 PPTX 交付两个阶段之间的分工边界。图像工具链的定位与设计边界image.md开篇给出了一条贯穿全部图像工具的设计边界Design boundary保持 provider 凭据显式化不使用全局的IMAGE_API_KEY/IMAGE_MODEL/IMAGE_BASE_URL一律使用各 provider 自己的变量名管线内获取保持 manifest 驱动批量获取以 JSON manifest 为唯一事实来源逐项写入状态、原子更新外部图片引用只是创作期输入创作阶段可以引用外部图片但交付阶段写出自包含的 SVG 预览与原生 PPTX 媒体文件。文档同时划清了管线边界图像工具覆盖 prompt 式 AI 生成、网络图片搜索、图片检查与 Gemini 水印去除四类能力原生公式创作属于 SVG 管线而非图像管线SVG 中书写 native formula marker由svg_to_pptx.py编译为可编辑的 PowerPoint OMML见 svg-to-pptx.py。各工具在角色分工上的定位可参见 image-base.md资源行的Acquire Via字段决定走哪条路径ai→image_gen.pyweb→image_search.py确定性派生图 →image_treat.py且一个纯 web 的 deck 永远不需要读 AI 生图参考。image_gen.py统一 AI 生图入口Path A 执行器image_gen.py是生成图像的统一入口也是文档中称为Path AAPI/代理执行器的实现。它的设计要点Default Generate 模式先检查design_spec.md §I / AI Image Acquisition Path只有api/auto才允许走 Path A取值缺失或未知时fail closed失败关闭回到 Step 4 恢复流程Quick Generate 模式没有 Design Spec若提供了显式 active-context path 则直接使用否则auto按 image-generator.md §7 定义的 A → B 链自动执行、不再询问自动化耗尽后触发 Quick 的 no-AI 重规划而不是 Offline Manual两种 profile 下host-native直接调用宿主图像工具显式manual选择则使用只读 Markdown sidecar。基础用法python3 scripts/image_gen.py A modern futuristic workspace python3 scripts/image_gen.py Abstract tech background --aspect_ratio 16:9 --image_size 4K python3 scripts/image_gen.py Concept car -o projects/demo/images python3 scripts/image_gen.py --list-backends从源码看CLI 接受 21 种宽高比1:1到21:9等与 4 档尺寸512px/1K/2K/4K各后端在内部自行校验自己支持的子集见 image_gen.py#L94-L103。后端分层Core / Extended / Experimental后端在源码中注册于BACKEND_REGISTRY字典image_gen.py#L105-L239每项包含模块名、层级tier、标签、默认模型、默认尺寸、密钥提示与别名。按当前仓库源码分层情况如下层级后端说明默认模型CoregeminiGoogle Geminigemini-3.1-flash-imageCoreopenaiOpenAI / OpenAI 兼容gpt-image-2Coreqwen阿里 Qwenqwen-image-2.0-pro密钥QWEN_API_KEY / DASHSCOPE_API_KEYCorezhipu智谱 GLM-Imageglm-imageCorevolcengine火山引擎 Seedreamdoubao-seedream-4-5-251128默认 2KExtendedtencent腾讯云 TokenHubhy-image-v3ExtendedstabilityStability AIstable-image-coreExtendedbflBlack Forest Labs FLUXflux-pro-1.1-ultraExtendedideogramIdeogramideogram-v3ExperimentalminimaxMiniMaximage-01Experimentalmodelscope/siliconflow/fal/replicate/openrouter按注册表中的默认模型层级排序常量TIER_ORDER {core: 0, extended: 1, experimental: 2}用于--list-backends的展示排序image_gen.py#L241。官方建议常规 PPT 工作默认使用 Core 层Extended 仅在需要特定模型风格时使用Experimental 视为 opt-in。运行python3 scripts/image_gen.py --list-backends可查看当前完整列表。显式选择后端的示例python3 scripts/image_gen.py A cat --backend openai python3 scripts/image_gen.py A cinematic portrait --backend minimax python3 scripts/image_gen.py A product launch hero image --backend qwen python3 scripts/image_gen.py 科技感背景图 --backend zhipu python3 scripts/image_gen.py A product KV in cinematic style --backend volcengine python3 scripts/image_gen.py A mountain landscape --backend tencent配置来源与.env查找顺序配置解析按以下优先级源码实现于 config.py 的load_prefixed_env_file/resolve_env_path由image_gen.py引入当前进程环境变量按顺序查找第一个存在的.env多个文件之间不合并当前工作目录Skill 安装目录如~/.agents/skills/ppt-master/.envclone 仓库根目录~/.ppt-master/.env用户级配置.env.example中也以注释形式确认了同样的查找顺序并特别注明IMAGE_CONCURRENCYmanifest 批量模式最大并发默认 3命中限流自动减半1 为串行兜底见 .env.example。关键约束活动后端必须通过IMAGE_BACKEND显式选择。IMAGE_API_KEY、IMAGE_MODEL、IMAGE_BASE_URL三个全局键已被故意移除——源码中_validate_runtime_config()会在检测到这些键时直接抛出ValueError并提示替换方案image_gen.py#L269-L283load_prefixed_env_file也会为.env中的弃用键打印替换提示。OpenAI 后端.env示例IMAGE_BACKENDopenai OPENAI_API_KEYsk-xxx OPENAI_MODELgpt-image-2 # Optional proxy # OPENAI_BASE_URLhttp://127.0.0.1:3000/v1 # OpenAI-compatible provider knobs: # OPENAI_SIZE_PRESETauto # OPENAI_RESPONSE_FORMATauto # OPENAI_QUALITYauto # Allowed values: png / jpeg / webp # OPENAI_OUTPUT_FORMATpng # jpeg/webp only, 0-100 # OPENAI_OUTPUT_COMPRESSION80 # gpt-image-2: auto / opaque # OPENAI_BACKGROUNDauto # auto / low # OPENAI_MODERATIONauto进程环境等价写法export IMAGE_BACKENDopenai export OPENAI_API_KEYsk-xxx export OPENAI_MODELgpt-image-2 export OPENAI_OUTPUT_FORMATpng当前进程环境始终优先于.env。OpenAI 后端的兼容细节文档对 OpenAI 后端给出了几条实操中容易踩坑的规则实现位于 backend_openai.pygpt-image-2是默认 OpenAI 模型请求用原生requests.post()发送而非 OpenAI SDK目的是提升与拦截 SDKhttpx传输层的 OpenAI 兼容代理的兼容性对gpt-image-2image_size512px表示低质量草稿预设而非字面 512px 边长。模型约束两边形长均为 16px 的倍数、长宽比不超过 3:1、总像素在 655,360–8,294,400 之间OPENAI_BACKGROUNDtransparent不被gpt-image-2支持使用auto或opaque当OPENAI_OUTPUT_FORMATjpeg/webp时生成文件使用.jpg/.webp扩展名拒绝 OpenAI 特有字段的 OpenAI 兼容平台可使用OPENAI_RESPONSE_FORMATomit、OPENAI_QUALITYomit、OPENAI_SIZE_PRESETpreset。合法取值response format 为auto/b64_json/url/omitsize preset 为auto/legacy/gpt-image/gpt-image-2/dall-e-2。通过 OpenAI 兼容后端接入第三方Agnes AI的完整示例IMAGE_BACKENDopenai OPENAI_API_KEYyour-agnes-key OPENAI_MODELagnes-image-2.1-flash OPENAI_BASE_URLhttps://apihub.agnes-ai.com/v1 OPENAI_SIZE_PRESETgpt-image-2 OPENAI_RESPONSE_FORMATomit OPENAI_QUALITYomitMiniMax 后端示例IMAGE_BACKENDminimax MINIMAX_API_KEYyour-api-key # Optional: override base URL (defaults to https://api.minimaxi.com, domestic China endpoint) # Use https://api.minimax.io for overseas access # MINIMAX_BASE_URLhttps://api.minimax.io # MINIMAX_MODELimage-01如果在一个.env或进程中同时保留多个 providerIMAGE_BACKEND必须显式指明活动 provider只使用 provider 专属密钥如GEMINI_API_KEY、OPENAI_API_KEY完整变量清单见 clone 模式下的 .env.example 或 skill 安装模式下的${SKILL_DIR}/.env.example。--manifest批量运行器manifest 模式是生图管线的主体。运行器行为实现见 image_gen.py 的 manifest 执行函数自适应并发逻辑约在 L887-L1120跳过Generated行之前先校验其背后文件文件缺失或损坏会退回Failed以有界的自适应并发迭代可重试行命中限流时将并发减半最低 1并发为 1 仍限流或预算耗尽时本次运行以可重试Failed结束每个状态原子写入中断是安全的已完成项保持GeneratedMarkdown sidecar 在完成时重渲染中断后可手动跑--render-md补渲染。可选参数--concurrency默认IMAGE_CONCURRENCY或 3限流时减半、最小 1、--image_size、--output/-o、--backend/-b、--model/-m、--list-backends。并发解析规则在源码中明确为CLI 值 IMAGE_CONCURRENCY环境 默认 3image_gen.py#L1123-L1127。单图形式image_gen.py prompt --filename …保留用于临时重掷ad-hoc re-roll。遗留拼写兼容Compatibility老 manifest 的type值按以下规则解读——background→hero_page 无 typehero→hero_page Primitive Aportrait→local Primitive Btypography→hero_pageembedded Primitive C。缺失的page_role视为local缺失的text_policy视为none每个 manifest 只警告一次缺少deck_rendering的存量 manifest 或缺type的条目会原样重放其拼好的prompt而不重建遗留的deck_style_anchor/deck_palette永远不会覆盖deck_rendering/color_scheme遗留page_role: full_page按hero_page解读。image_search.py零配置网络搜图与版权溯源image_search.py是image_gen.py的姊妹工具当资源列表行的Acquire Via: web时使用面向开放许可的图库 provider。python3 scripts/image_search.py offshore wind farm \ --filename cover_bg.jpg --slide 01_cover \ --orientation landscape -o projects/demo/images多行 web 资源使用--batch images/image_queries.json并发搜索默认并发适中可用--concurrency N/IMAGE_SEARCH_CONCURRENCY调节而不必逐行调用——它相当于 web 路径上的image_gen.py --manifest。schema 与状态语义见 image-searcher.md §5。Provider 与默认搜索链Provider配置强项pexels推荐PEXELS_API_KEY现代库存摄影人物、职场、生活方式pixabay推荐PIXABAY_API_KEY覆盖面广含照片与插画openverse零配置回退聚合器Wikimedia Flickr 博物馆 rawpixelwikimedia零配置教育、科学、地理、历史题材默认搜索链未指定--provider时已配置的 Pexels → 已配置的 Pixabay → Openverse → Wikimedia缺 key 的 provider 被静默跳过。有 key 的 provider 扩大库存摄影覆盖面但是可选的零配置 provider 始终有效。image_search.py与image_gen.py使用同一套.env查找顺序因此 skill 安装可以把PEXELS_API_KEY/PIXABAY_API_KEY放在~/.ppt-master/.env。源码中image_sources/目录下对应四个 provider 实现provider_pexels.py、provider_pixabay.py、provider_openverse.py、provider_wikimedia.py共享逻辑在 provider_common.py。查询撰写指引Design Spec §VIII 的Reference保留完整视觉/裁切意图给本 CLI 单独写一条简洁的 provider query。以保持身份的最短短语起步但保留超过四个词的精确多词专名与必要的消歧词。对拥有多个通用名的精确实体使用可重复的--query-variantbatch 中为query_variants提供实质不同的官方翻译、拼写、别名或中文名称——结果会先聚合去重再排序。场景写法通用库存概念boardroom meeting中国特定地标精确的官方地点/身份名 必要地理限定避免否定式 prompt 措辞如not tourist snapshot许可过滤默认所有 provider 同时允许cc0,pdm,pexels,pixabay,cc by,cc by-sa。选中的图片可能是no-attribution或attribution-requiredExecutor 仅在需要时添加行内署名。--strict-no-attribution限制搜索到cc0,pdm,pexels,pixabay——适合无法承载署名元素的满幅 hero 图或模板。从源码看strict 模式会向 provider 只请求no-attribution-only阶段的匹配结果image_search.py#L1035。固定 provider、拒绝署名或覆盖 manifest 路径# Pin Wikimedia python3 scripts/image_search.py Olympics opening ceremony \ --filename event.jpg --provider wikimedia \ --orientation landscape -o projects/demo/images # Strict mode — refuse CC BY / CC BY-SA python3 scripts/image_search.py abstract gradient \ --filename hero.jpg --strict-no-attribution \ -o projects/demo/images适配性审查与人工替换web 路径的首条命中是元数据相关不保证视觉正确文档给出了完整的人工/半自动审查流程默认只下载最佳匹配另存一份降采样审查副本到images/.review/stem.jpg正式放置的资产保持全分辨率。下载到的相机多帧 JPEGMPOCommons 原片中常见在验证前被重写为主帧使后续消费者看到的是单帧 JPEG对精确主体地标、人物、公司、产品使用--require-terms或 batch 的required_terms在排序前拒绝视觉看似对但元数据错的结果。示例--require-terms Chongqing --require-terms Jiefangbei|Liberation Monument。保留专名/地理锚点不要为覆盖度放宽到canyon、stone pillar、ancient town这类泛词当当前 Generate agent 能审查图像时使用--save-candidates工具只保存排名第一页的合格预览默认 8 张写candidates/stem/review_sheet.jpg不动目标图片与image_sources.json单独 CLI 使用默认 best-only对照活动 Reference/Crop Policy 比较缩略图集合。某张通过后运行--promote candidate_03.jpg --filename name.jpg精确下载并验证该原图batch 模式传同样的--batch images/image_queries.json使Needs-Selection变为Sourced若本页缩略图都不通过且has_more_candidates为 true用同一 query 与 filename 取--candidate-page 2——池子已保存的required_terms、query_variants、orientation、最小尺寸自动继承变更 query 会被拒绝为跨页续取应新开 page-1 池。batch 模式传--candidate-page 2可对所有Needs-Selection行整体翻页也可把单行candidate_page设为next_candidate_page并只把该行重置为Pending。候选编号从 9 继续早先页面保留在candidates.jsonsaved_pages中可随时 promote且不下载任何原图。只有池子耗尽后才允许实质性修改身份措辞、视角、翻译、别名或消歧词生成全新池没有多模态审查能力时省略--save-candidatesbest-only 模式拒绝需视觉验证的近似匹配只接受严格元数据候选下载一张原图并记录selection_method: metadata-ranked若元数据无法证明实体或活动视觉要求则记Needs-Manual不得声称做过视觉确认--from-url url --filename name.jpg下载用户指定 URL 并替换目标记录license_tier: manual——模型无关的人工路径无多模态模型也能用。image_search.py参数表参数默认值说明query位置参数必填—内部会做简化处理--query-variant—可重复的别名/翻译batch 行使用query_variants--filename必填—输出文件名需与资源列表一致-o / --output.输出目录manifest 默认output/image_sources.json--slide、--purpose、--orientation、、any记录的 slide idbackground/hero/side/accentlandscape/portrait/square--min-width/--min-height1200/800下载像素下限--from-url尊重显式更低的覆盖值--provider搜索链固定单个 provider--strict-no-attribution关拒绝 CC BY / CC BY-SA--require-terms—可重复的身份门逗号分隔组A\|B表示别名--save-candidates关缩略图模式一页排序预览 review_sheet.jpg不下载原图--max-candidates8页大小0 全量池仅调试用--candidate-page1排序页第 2 页从第 9 名开始。单 query 续取继承已存池请求batch 重跑把所有Needs-Selection行翻到该页--promote candidate—精确下载一张选定原图强制执行各门写入溯源--from-url url—人工替换记录license_tier: manual无需视觉模型--manifest pathimages/image_queries.json覆盖 manifest 路径Batch 运行器与排序规则每个 batch 项必填filename、query、status可选query_variants、candidate_page、slide、purpose、orientation、provider、strict_no_attribution、min_width、min_height、required_terms。运行器对每条Sourced行重新验证其文件、尺寸与 manifest 条目漂移 →Failed然后并发搜索所有Pending/Failed行默认并发 3--concurrency N或IMAGE_SEARCH_CONCURRENCY可调对限流敏感的免费 provider 可用1严格控速。缩略图模式写入Needs-Selection附带candidate_page、candidate_count、candidate_total、has_more_candidates、next_candidate_page与review_sheet路径不创建任何图片或溯源记录。batch 模式下位置参数 query 会被拒绝而非静默忽略。用同一--batchmanifest promote 后该行转入Sourced。provider 失败保持可重试Failed干净耗尽转为Needs-Manual每次完成后保存状态。**排序Ranking**只对 provider 元数据排序绝不排序像素且不得调成口味引擎硬性拒绝无效许可与零相关项best-only 模式拒绝缺失任一required_terms组的候选缩略图模式严格匹配优先仅当恰好缺失一组且发现 query 仍具强相关性时才接纳近似匹配标记identity_evidence: visual-verification-required永不自动 promote随后是标题中元数据验证过的身份优先于仅 URL 匹配具体 query token 按整词 ASCII token 匹配office≠officer并压过泛词orientation 是小罚分、no-attribution 是小加分像素数设有上限使巨大而弱相关的结果无法压过更小但精确的结果。image_sources.json溯源格式每次成功下载按filename追加或替换一条记录文件原子写入且幂等已有 manifest 损坏会阻止写入。{ license_verification: provider metadata used; manual review recommended for external delivery, generated_at: 2026-05-01T12:17:59.856275Z, items: [ { filename: team.jpg, slide: 03_team, purpose: Leadership photo, search_query: executive boardroom meeting, matched_query: leadership team boardroom, selection_method: metadata-ranked, orientation: landscape, provider: openverse, stage: all, title: Untitled, author: , source_page_url: https://www.rawpixel.com/..., download_url: https://..., license_name: CC0, license_url: https://creativecommons.org/publicdomain/zero/1.0/, license_tier: no-attribution, attribution_required: false, width: 1024, height: 683, metadata_dimensions: { width: 4800, height: 3200, note: upstream-reported size; actual downloaded file is smaller (likely a preview) }, attribution_text: team.jpg — \Untitled\ via Openverse — license: CC0 (...), status: sourced } ] }字段语义matched_query是实际找到该资产的 query 或 variantselection_method在审查后 promote 时为visual-thumbnail严格元数据路径为metadata-rankedwidth/height是从保存文件实测布局用它metadata_dimensions仅在上游声称尺寸不一致时出现license_tier驱动 Executor 的署名行为attribution_text是署名的规范来源只能按 §7 的文法压缩stage取all或no-attribution-only。允许的许可默认CC0、Public Domain、Pexels License、Pixabay Content License、CC BY、CC BY-SA。自动拒绝CC BY-NC、CC BY-ND、CC BY-NC-SA、CC BY-NC-ND、保留所有权利、未知。失败处理在 image-base.md §3 的基础上image_search.py的失败状态机为任何 provider/阶段都无候选 →Needs-Manual建议更精确的 query 或换 provider仅当页面可能承载署名时才允许去掉--strict-no-attribution重跑当前页无可接受图但has_more_candidates→ 取next_candidate_page不改 query、不下载页码超过candidate_total→ 池子耗尽添加 variant 或转入人工边界部分预览失败但另一些合格 → 保留集合所有预览失败或 provider/网络失败仍在 →Failed由后续 batch 重试promote 的原图下载/可读性/尺寸门失败 → 保持Needs-Selection换一张或改 querybest-only 下载 403/404 → 调度器落到下一排序候选无 key 的 provider → 跳过CLI 退出码备好Needs-Selection集合返回0Failed或Needs-Manual返回1。image_treat.py非破坏性位图派生image_treat.py从project_path/images/下已准备好的一张位图创建非破坏性 PNG 派生图。使用前提只有当某页确需烘焙进位图的像素效果时裁剪、蒙版、旋转、镜像、不透明度、阴影、scrim、描边、重叠都保持为原生 SVG/PPT 处理。它不做语义抠图——纯色键抠图用slice_images.py --alpha --bg key --strict-alpha纯红/绿/蓝键还能恢复软 alpha 并去溢色独立抠图交给已备好的 RGBA 资产或宿主图像编辑器已注册 subject/base 图层才走 image-generator.md §4.4。python3 scripts/image_treat.py projects/demo hero.jpg \ --output hero_soft.png --brightness 0.9 --contrast 1.1 --blur 12 python3 scripts/image_treat.py projects/demo hero.jpg \ --output hero_duotone.png --duotone #14213D #FCA311 python3 scripts/image_treat.py projects/demo title_art.png \ --output title_art_fit.png --fit 920x228支持的操作亮度、对比度、降饱和/灰度、双色调duotone、高斯模糊、--fit WxH在像素盒内等比仅缩小、保持宽高比与 alpha绝不放大。处理按固定顺序组合执行亮度 → 对比度 → 色调处理降饱和/灰度/duotone→ 模糊 → fit源码 docstring 与build_parser的帮助文本均声明了这一顺序且desaturate/grayscale/duotone通过add_mutually_exclusive_group互斥image_treat.py#L149-L160。约束与行为至少一个选项必须产生实际变化动画源被拒绝而不是降到单帧相机多帧 JPEGMPO取主帧输入与输出都是images/下的裸文件名输出必须是新的.png文件工具保留 EXIF 校正后的显示尺寸、不改动已有 alpha 蒙版、永不覆盖源文件或已有派生图若images/image_sources.json含源文件名新记录继承其合法来源并记录derived_from与有序的treatments源码通过复用image_search的write_sources_manifest保证与搜图清单同构见 image_treat.py#L45-L51所有计划中的派生图就绪后运行analyze_images.py让盘点反映 SVG 创作实际消费的文件。analyze_images.py创作前的客观事实盘点在写 design spec 或创作 SVG 之前对images/目录做客观文件事实盘点python3 scripts/analyze_images.py project_path/images该工具不解析画布、不推荐左右/上下等版面布局。其原子 CSV写入项目analysis/image_analysis.csv原子保存记录EXIF 校正后的原生尺寸与AspectRatio、客观宽高比类别、可选来源SourceDisplayRatio、格式、真实透明像素存在性、使用次数、位图/矢量能力事实等。从源码看CSV 表头为No, Filename, Width, Height, AspectRatio, PixelAspectRatio, SourceDisplayRatio, RatioSource, Format, HasTransparentPixels, UsageCount, DisplayRatioVariants, AssetKind, SvgRenderable, PptxNativeSupported, SizeKB, Categoryanalyze_images.py#L392-L409。客观类别分档为2.0Ultra-wide、1.5–2.0Wide landscape、1.2–1.5Standard landscape、0.8–1.2Near square、0.8Portraitanalyze_images.py#L206-L218。两点澄清表中的使用次数Uses/UsageCount是导入 manifest 记录的源出现次数不是 SVG 引用计数也不会发现未使用资产空目录会重写一份仅含表头的报告支持的格式文件不可读时仍刷新报告并返回非零退出码。使用边界这是默认的事实盘点不做语义图像理解、不选构图。生成规划遵循 Strategist 的 context-first 边界源上下文、图注/alt 文本/标题、文件名、用户备注与既有资源记录优先。只有已选定的 provided/web 资产在焦点安全裁切、叠层对比或安静区域上仍有实质歧义时才允许为该处放置做单张检查这绝不重新打开选择与溯源、绝不批量打开图片目录、也绝不恢复对 AI 生成图的例行回读。gemini_watermark_remover.pyGemini 水印清理针对手动下载的 Gemini 水印图片做清理python3 scripts/gemini_watermark_remover.py image_path python3 scripts/gemini_watermark_remover.py image_path -o output_path.png python3 scripts/gemini_watermark_remover.py image_path -q注意两点依赖scripts/assets/bg_48.png与scripts/assets/bg_96.png两个模板资产仓库中位于 scripts/assets最好在下载 Gemini full size 图之后使用。依赖安装pip install Pillow numpy遗留工具latex_render.py的边界说明latex_render.py是保留的独立工具将用户自写的images/formula_manifest.json渲染为 PNGpython3 scripts/latex_render.py project_path python3 scripts/latex_render.py project_path --dry-run它不属于默认生成或 Quick Generate 的调用链新项目也不创建 formula manifest 或公式图片。受支持的生成 deck 路径是在 SVG 中写原生公式 marker由svg_to_pptx.py把 LaTeX 负载编译为可编辑的 PowerPoint OMML。latex_render.py只用于显式要求的外部栅格工作流不是Keynote、WPS、LibreOffice 或其他客户端的兼容回退。组合使用一条完整的图像工作流把上述工具串起来一个典型的 ppt-master 图像管线是配置写.env或进程环境显式IMAGE_BACKEND provider 专属密钥多 provider 共存时该字段是唯一开关盘点analyze_images.py先对images/做客观事实盘点作为 design spec 与 SVG 创作的事实基线获取按资源行Acquire Via分发——ai行走image_gen.py --manifest images/image_prompts.json自适应并发、原子状态web行走image_search.py --batch images/image_queries.json许可门 身份门 溯源清单派生仅对确需烘焙像素效果的位置用image_treat.py产出独立.png派生图继承来源并记录derived_from/treatments复核再次analyze_images.py确认 SVG 将要消费的文件集合与事实盘点一致交付时管线写出自包含 SVG 预览与原生 PPTX 媒体外部引用仅作为创作期输入。整条管线的可验证依据分布在 image_gen.py、image_search.py、image_treat.py、analyze_images.py 与其对应参考文档 image-generator.md、image-searcher.md、image-base.md角色级细节意图到 query 的翻译、署名契约以这些 references 为准。【免费下载链接】ppt-masterAI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations,>项目地址: https://gitcode.com/GitHub_Trending/ppt/ppt-master创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考