)
AI 应用媒体生成后端前端【免费下载链接】pollinationsYour Friendly Open-Source Gen-AI Platform项目地址https://gitcode.com/gh_mirrors/po/pollinations点击查看免费下载导读apps/gimp-pollinations 是 Pollinations 开源平台为 GIMP 3 提供的官方插件让你无需离开 GIMP、无需安装任何第三方 Python 包就能用自己的 Pollinations 账户直接生成图像、或在当前图层上进行 AI 编辑结果以新图像或新图层的形式呈现。读完本文你将掌握该插件的完整安装流程含 Windows/Linux/macOS 与 Flatpak 路径、基于 BYOP 设备流Device Flow的浏览器授权连接原理、生成与编辑的底层 API 调用细节、本地化私密授权存储机制以及两套自动化验证方法纯本地单元测试与 GIMP 原生冒烟测试并能对照仓库源码理解每一步背后的实现。一、插件功能总览插件安装后会在 GIMP 的菜单栏新增Filters Pollinations子菜单提供四个入口菜单项作用Connect Account…通过浏览器设备授权流程连接你的 Pollinations 账户Disconnect Account清除本机保存的授权Generate Image…根据提示词Prompt生成一张全新图像Edit Active Layer…编辑当前活动图层需要恰好选中一个图层核心行为约定来自 README生成结果以新图像窗口打开或在有图像打开时作为新图层插入编辑存在选区时仅将选区的包围矩形bounding rectangle作为编辑区域发送无选区时使用整个活动图层编辑不破坏源数据不会替换源图层也不会应用蒙版——结果始终是一个新的独立图层原始像素保持不变。这些约定在源码 pollinations-gimp.py 中都有对应实现run()根据 action 分发到 connect/disconnect/generate/edit 四个分支编辑分支会严格校验len(drawables) 1且对象是Gimp.Layer否则直接报错。二、安装插件2.1 环境要求GIMP 3带 Python 插件支持插件声明依赖Gimp 3.0、GimpUi 3.0、Gtk 3.0三个 GI 版本见 pollinations-gimp.py插件只使用Python 标准库urllib、ssl、ctypes、json等以及 GIMP 自带的 GI/GTK 库不要向 GIMP 环境安装任何 pip 包README 注明Windows 版 GIMP 3.2.4 已通过原生冒烟测试验证Linux 与 macOS 的安装路径已给出说明但未在仓库内实际测试。2.2 一键安装install.py先在编辑 偏好设置 文件夹 插件Edit Preferences Folders Plug-ins中查看你的用户插件目录然后用 Python 3 运行仓库提供的安装脚本参数必须是该目录的精确路径GIMP 不同小版本可能使用各自独立的配置目录python install.py /your/GIMP/user/plug-ins安装脚本 install.py 的逻辑很直接它会在插件目录下创建pollinations-gimp子目录把pollinations-gimp.py、pollinations_api.py、token_store.py三个文件复制进去并给入口脚本pollinations-gimp.py设置 Unix 可执行位0o755最后提示重启 GIMP 加载菜单。各平台插件目录的典型位置平台典型父目录Windows%APPDATA%\GIMP\versionLinux~/.config/GIMP/versionmacOS~/Library/Application Support/GIMP/versionFlatpak以 GIMP 偏好设置中显示的目录为准2.3 手动安装如果不使用安装脚本可以手动完成同样的步骤在插件目录中创建pollinations-gimp文件夹将pollinations-gimp.py、pollinations_api.py和token_store.py三个文件放入该文件夹在 Unix 系统上确保入口脚本pollinations-gimp.py可执行重启 GIMP。三、账户连接基于 BYOP 设备流的浏览器授权3.1 无需 App Key可选发布者归因插件不要求任何 App Key。发布者publisher可以可选地设置环境变量POLLINATIONS_GIMP_APP_KEY值为可发布的pk_开头密钥用于在 Pollinations 侧做流量归因。源码 pollinations_api.py 会校验该值必须以pk_开头否则直接抛错。3.2 连接四步走选择Filters Pollinations Connect Account。浏览器会打开设备审批页面同时 GIMP 对话框会显示授权 URL 与用户码user code在浏览器中核对账户、预算budget与有效期expiry后批准。用户的 API 密钥不会被粘贴进 GIMP——授权通过sk_前缀的用户密钥形式由 Pollinations 服务端签发并返回之后即可使用Generate Image或Edit Active Layer。模型选择器会从账户对应的/image/models目录重新加载包含社区图像模型编辑模式只展示支持图像输入input_modalities含image的模型分辨率控件仅在模型声明了resolutions时出现否则使用提供商默认参数Disconnect Account清除本机保存的授权。如需同时在服务端撤销请在账户的 Keys 页面操作。3.3 设备流协议细节源码级插件使用的是 BRING_YOUR_OWN_POLLEN.md 中描述的CLIs Headless AppsDevice Flow契约完整流程对应 pollinations_api.py 的两个函数①begin_authorization(app_key)请求设备码POSThttps://enter.pollinations.ai/api/device/codeJSON 体为{client_id: app_key}无 App Key 时为空对象校验响应必须包含device_code、user_code、verification_uri、expires_in四个字段拼接审批 URL 时若服务端提供verification_uri_complete已内嵌用户码的完整链接则优先使用并且会校验 URL 的主机与enter.pollinations.ai一致防止被重定向到意外站点用单调时钟time.monotonic() expires_in记录截止时间。②poll_authorization(code, cancel)轮询换取用户密钥以max(5, interval)为轮询间隔POSThttps://enter.pollinations.ai/api/device/token体为{device_code: ...}返回access_token且以sk_开头即成功遇到slow_down时轮询间隔自动5 秒服务端退避指令access_denied视为用户拒绝expired_token与到达截止时间都视为码过期其余非authorization_pending状态一律报错用户点击取消线程事件cancel被置位时抛出Cancelled。测试 test_pollinations.py 验证了 pending → slow_down → denied 的完整序列并断言 slow_down 后第三次轮询与前一次时间差 ≥ 9.9 秒即 55 退避生效。3.4 错误语义与提示request_json 将 HTTP 状态码映射为可操作的错误信息HTTP含义插件提示401授权过期或被撤销重新连接账户AuthError会同时清除本地存储403模型权限不足检查账户中的模型权限或重新连接402Pollen 或预算不足充值 Pollen 或调整账户预算429触发限流等待后重试两点安全设计值得注意响应体永不显示错误对话框绝不展示 API 响应正文因为响应体可能回显 Bearer 凭证测试test_errors_do_not_echo_credentials专门断言异常消息中不包含sk_值断网后的重试纪律网络中断后请求可能在远端已完成因此 README 建议先查看账户活动记录再重试避免重复计费源码中对应错误消息也会提示“check account activity before retrying”。3.5 授权持久化与私密存储授权在重启 GIMP 后依然有效。存储实现位于 token_store.pyWindows使用系统 DPAPICryptProtectData/CryptUnprotectData通过ctypes调用crypt32.dll加密成绑定 Windows 用户的密文 blob测试会验证磁盘文件内容中不出现明文 tokenPOSIXLinux/macOS以原子方式写入仅属主可读写的文件目录0o700、文件0o600原子写入先tempfile.mkstemp写临时文件flushfsync后os.replace覆盖目标避免半写状态格式校验save()拒绝非sk_开头的内容load()只返回sk_开头且解码成功的值任何 OSError/UnicodeError 一律视为未登录。各平台存储位置平台路径Windows%LOCALAPPDATA%/PollinationsGimpmacOS~/Library/Application Support/PollinationsGimpLinux$XDG_CONFIG_HOME/pollinations-gimp默认~/.config授权仅作为 Bearer 请求头发送给 Pollinations 服务Authorization: Bearer token不会出现在其他任何地方。四、生成与编辑的 API 调用原理4.1 传输层与超时策略generate 构造的请求体{ model: 模型名, prompt: 提示词, response_format: b64_json }选定了模型支持的resolution时才追加该字段且会校验其必须出现在模型的resolutions列表中否则不发起请求无源图纯生成走POST https://gen.pollinations.ai/v1/images/generations带源图编辑时先校验模型input_modalities含image再把 PNG 源字节以data:image/png;base64,...的 data URI 写入image字段改走POST https://gen.pollinations.ai/v1/images/edits响应取result[data][0][b64_json]并 Base64 解码为字节。超时策略是刻意的生成请求的timeoutNone无固定客户端超时因为长耗时生成可能合法地超过固定时限README 明确说明“不要让客户端超时后鼓励用户付费重试”而账户与模型目录等元数据请求保持 30 秒超时。测试test_generation_waits_without_deadline_but_catalog_remains_boundedtest_pollinations.py用 spy 方式验证了两条生成路由的urlopen均无 timeout而load_models的 timeout 为 30。4.2 后端如何接收这些请求/v1/images/generations与/v1/images/edits是 Pollinations 图像网关的 OpenAI 兼容端点见 routes/images.ts。对编辑端点后端 parseEditInput 同时支持multipart/form-data与 JSON 两种输入JSON 形式的image可以是单个 data URI 字符串或对象数组response_format被严格校验为url或b64_jsonresolution作为透传参数passthrough转发给下游提供商。这解释了插件为何能用最简 JSON 负载完成编辑——它正是后端原生支持的契约。4.3 模型目录过滤load_models请求GET https://gen.pollinations.ai/image/models带 Bearer 授权随后在客户端做过滤只保留output_modalities含image且不含video的模型。测试test_catalog_keeps_community_and_account_authorizationtest_pollinations.py验证了带账户授权访问该端点时社区模型owner/new会被保留、视频模型会被剔除且请求头携带Bearer sk_...与User-Agent: Pollinations-GIMP/1.0。服务端侧proxy.ts 对/image/models挂载了认证中间件已认证请求会包含账户拥有的私有社区模型、按 API 密钥权限过滤模型并在账户无付费余额或密钥仅使用 Quest Pollen 时隐藏paid_only模型——这与 README 中“模型选择器反映账户权限与余额”的描述一致。4.4 结果落回 GIMP图层与原位对齐编辑完成后insert_result 将返回的 PNG 写入临时文件通过Gimp.file_load_layer读入当前图像作为名为Pollinations result的新图层插入并依据导出时记录的选区边界把结果scale到相同尺寸、set_offsets对齐到原选区位置整个插入过程包在image.undo_group_start()/end()中保证可撤销。纯生成无图像打开或勾选“Open as a new image”则通过Gimp.file_loadGimp.Display.new直接打开新图像窗口。源图导出在 export_source 中完成用drawable.mask_intersect()求选区与活动图层的交集若不相交直接报错随后把活动图层复制到一张临时 RGB 图像并裁剪到选区范围避免导出/裁剪修改源数据经 PDB 的file-png-export导出为 PNG同时返回(offset_x x, offset_y y, width, height)记录图层偏移与选区几何供结果对齐使用。五、验证与测试5.1 纯本地单元测试无需任何网络凭据python -m unittest -v test_pollinations该测试套件 test_pollinations.py 会起一个本地ThreadingHTTPServer127.0.0.1随机端口把模块的ENTER/GEN两个端点重定向到该服务器用真实的 localhost HTTP 请求、不依赖任何外部凭据或 Pollen 覆盖模型目录过滤与账户授权头Bearer、User-Agent生成/编辑请求 JSON 构造resolution、imagedata URI 只在编辑时出现设备流轮询与 slow_down 退避、拒绝/取消/过期处理不支持的分辨率、不支持图像输入的模型、空提示词不会发出任何请求错误脱敏异常消息不回显sk_凭证持久化 token 存储重启可读、Windows 密文、POSIX 权限0o600、clear 幂等。5.2 GIMP 原生冒烟测试smoke_gimp.py使用 GIMP 自带的 Python 批处理解释器运行需把__file__设置为脚本绝对路径gimp-console-3 --new-instance --no-data --no-fonts --console-messages \ --batch-interpreterpython-fu-eval \ --batchexec(compile(open(/absolute/path/smoke_gimp.py).read(), smoke_gimp.py, exec), {__file__: /absolute/path/smoke_gimp.py}) --quitsmoke_gimp.py 不涉及任何网络与密钥它创建一个 80×60 的测试图像、插入一个带偏移10,8的图层、框选一个区域然后直接调用插件模块里的export_source/insert_result验证原生 PNG 导出数据以\x89PNG开头选区坐标与包围矩形(20, 18, 24, 16)正确新图层成功插入且尺寸、偏移与选区一致源图层名称与像素在编辑前后完全不变通过剥离 PNGtIME块后比较像素流实现无选区时按整层导出(10, 8, 60, 40)。在 Unix 上若无独立的 console 可执行文件使用已安装的gimp可执行文件替代即可。5.3 现场验收检查Live Acceptance自动化测试之外README 给出了一份人工验收清单配置已注册的 App Key → 连接 → 重启 GIMP → 生成 → 在带偏移的图层上框选区域并编辑 → 确认返回的图层与选区对齐、源图层完好 → 最后断开连接并确认再次生成会提示重新连接。需要说明的是真实账户授权与计费生成不属于自动化测试范围README 明确注明未在自动化测试中运行。六、相关契约与进一步阅读BRING_YOUR_OWN_POLLEN.md插件所用的 BYOP 设备流契约/api/device/code、/api/device/token以及 Web 场景的 OAuth 授权码流PKCE、Fragment 流、用户信息端点/api/device/userinfo的完整说明图像 API 端点POST /v1/images/generations与POST /v1/images/edits的请求/响应契约见 routes/images.tsGIMP Python 插件开发教程官方资源见 README 末尾引用插件源码全览入口与 UI 逻辑 pollinations-gimp.py、传输与设备流 pollinations_api.py、私密存储 token_store.py、安装脚本 install.py。小结Pollinations GIMP 3 插件是一个“零第三方依赖 浏览器设备授权 账户级模型/预算感知”的完整实现范本安装脚本负责把三个纯标准库 Python 文件落到插件目录设备流把账户授权变成可在本机持久化、可随时撤销的sk_用户密钥传输层对超时、错误脱敏和断网重试做了工程化的取舍编辑流程通过“复制源图层 → 导出选区 → 新图层对齐插入”保证源数据永远不被改写。无论你是想直接把它装进 GIMP 使用还是把它作为“CLI/桌面端接入 Pollinations BYOP 设备流”的参考实现来阅读这份代码都值得通读。赞分享AI 应用媒体生成后端前端【免费下载链接】pollinationsYour Friendly Open-Source Gen-AI Platform项目地址https://gitcode.com/gh_mirrors/po/pollinations点击查看免费下载相关推荐高效配置管理自动化TOML文档生成的实战指南高效配置管理自动化TOML文档生成的实战指南 在当今的软件开发环境中配置管理已成为项目成功的关键因素。TOMLToms Obvious, Minimal开发工具GIMP批量图像处理插件释放图像编辑生产力的终极武器GIMP批量图像处理插件释放图像编辑生产力的终极武器 想象一下当你面对数百张需要统一处理的图片时手动逐张操作是多么令人沮丧的场景。GIMP批量图像处理插件探索AI图像编辑新境界OpenVINO™ AI插件助力GIMP探索AI图像编辑新境界OpenVINO™ AI插件助力GIMP 项目介绍 OpenVINO™ AI Plugins for GIMP 是一款专为GIMP 3、上一篇ICE.js错误处理构建稳定可靠的应用程序下一篇MonkeyType多语言支持完整指南从LTR到RTL的国际化实现方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考