当前位置: 首页 > news >正文

搭建 Stable Diffusion 图像生成系统并通过 Ngrok 暴露到公网(实现本地系统网络访问)——项目记录

目录

📚 背景与需求

📝 需求明确

🔑 核心功能

🌍 网络优化

🛠️ 方案确认

⚙️ 技术栈

📈 实现流程(Flask端口+Ngrok注册authtoken)

🎯 优化目标

🔍 实现细节

1. 迁移到 Flask

2. 持久化提示词

3. 图像下载功能

4. 配置 ngrok

🛠️ 优化过程

📊 最终效果​编辑

📝 总结

📚 背景与需求

随着 AI 图像生成 技术的快速进步,Stable Diffusion 已成为热门工具。本项目的目标是将基于 PyQt5 的本地图像生成系统迁移为 Flask 网页应用,并通过 ngrok 暴露到公网,实现远程访问和图像下载功能。
原效果:

网页效果展示(可下载另存为、并通过网页展示)

手机端访问、下载效果展示

📝 需求明确

  • 系统迁移:将 PyQt5 GUI 迁移到 Flask 网页应用。

  • 公网访问:通过 ngrok 实现公网 URL 访问。

🔑 核心功能

  • 输入提示词生成图像:支持 Stable Diffusion 以及 img2img 生成模式。

  • 调整推理步数和优化强度:提供自定义生成参数。

  • 持久化历史提示词:使用 JSON 文件 保存历史生成记录。

  • 支持图像查看、删除和下载:方便用户管理生成的图像。

🌍 网络优化

  • 确保网络环境下 URL 稳定:采用 ngrokNATAPP 优化访问稳定性。


🛠️ 方案确认

⚙️ 技术栈

  • 后端:Flask (Python)

  • 前端:HTML + CSS

  • 模型:Stable Diffusion v1.5

  • 内网穿透:ngrok(备用 NATAPP)


📈 实现流程(Flask端口+Ngrok注册authtoken)

  1. 从 PyQt5 提取图像生成逻辑,迁移到 Flask:实现图像生成的 Web 接口。

    端口很重要,这里随机设置为5000

    Flask安装完成:

  2. 用 JSON 文件保存历史提示词:避免每次启动时丢失历史记录。

  3. 添加图像下载功能:允许用户下载生成的图像。

    生成过程仍需保持科学上网,否则报错

  4. 配置 ngrok 暴露服务:通过公网 URL 进行访问。首先安装ngrok,注册,
    Download ngrok下载解压后会有一个ngrok.exe应用程序,

    cd D:\应用\app\ngrok-v3-stable-windows-amd64

    ngrok.exe http 5000
    随后在注册界面,复制下面命令并在cmd界面输入


    复制这段ID,在ngrok运行,链接成功则会出现显眼的online字样,下面的forwarding就是可供他人访问的网址
    输入命令,他人可通过网址访问,由于是免费版,每次地址域名不一致且时间有限


🎯 优化目标

  • 修复“未知提示词”显示问题:确保历史提示词能够正确加载。

  • 支持推理参数调整:允许用户自定义生成过程的步数和优化强度。

  • 确保下载功能在公网可用:测试并确认公网环境下的图像下载流畅。


🔍 实现细节

1. 迁移到 Flask

  • PyQt5 分析:提取图像生成逻辑和历史管理部分。

  • Flask 设计

    • 创建 app.py,定义路由处理提示词输入和图像生成。

    • 使用 render_template_string 渲染 HTML 界面。

  • 模型加载

    • 全局加载 Stable Diffusion 模型,避免每次请求时重新初始化。


2. 持久化提示词

  • 问题:重启后提示词显示为“未知提示词”。

  • 解决方案

    • 使用 history.json 文件保存历史数据。

    • 每次生成或删除图像时更新 JSON 文件。

    • 启动时从 JSON 文件加载历史记录。


3. 图像下载功能

  • 实现

    • 添加 /download/<filename> 路由,使用 send_file(as_attachment=True) 进行文件发送。

    • 在 HTML 中为历史记录添加下载链接。

  • 验证

    • 通过 ngrok 提供的公网 URL 测试图像下载功能。


4. 配置 ngrok

  • 步骤

    • 注册 ngrok,获取 authtoken

    • 运行 ngrok config add-authtoken <token>

    • 启动 Flask 后,运行 ngrok http 5000,获取公网 URL。

  • 网络优化

    • 在中国环境下,使用 VPN 或 NATAPP 确保网络稳定性。


🛠️ 优化过程

  • 提示词持久化:通过 JSON 文件解决“未知提示词”问题,保证每次启动时历史提示词正确显示。

  • 下载功能:从仅能查看图像升级为支持图像下载。

  • 网络稳定性:若 ngrok 不稳定时,及时切换为 NATAPP。


📊 最终效果

  • 本地访问http://localhost:5000 功能完整,图像生成和管理顺畅。

  • 公网访问:通过 ngrok 生成的 URL,支持图像生成、查看、删除和下载。

  • 用户体验:提示词正常显示,下载功能流畅,满足用户需求。


📝 总结

本项目成功将原本基于 PyQt5 的图像生成系统迁移为 Flask Web 应用,并通过 ngrok 实现公网访问。通过优化提示词持久化机制和图像下载功能,进一步提升了用户体验。未来可以考虑扩展更多功能,如图像上传和更复杂的生成模式。
 以前的扩散项目:
深度学习项目记录·Stable Diffusion从零搭建、复现笔记-CSDN博客

SD + Contronet,扩散模型V1.5+约束条件后续优化:保存Canny边缘图,便于视觉理解——stable diffusion项目学习笔记-CSDN博客

这篇系统基于Pyqt实现。
Stable Diffusion+Pyqt5: 实现图像生成与管理界面(带保存 + 历史记录 + 删除功能)——我的实验记录(结尾附系统效果图)-CSDN博客

相关文章:

  • 基于esp32-s3,写一个实现json键值对数据创建和读写解析c例程
  • HCIA-Access V2.5_18_网络管理基础_1_网络管理系统架构
  • 【AI】Trae的MCP配置及使用测试
  • 什么是 GLTF/GLB? 3D 内容创建的基本数据格式说明,怎么下载GLB/GLTF格式模型
  • 实现支付宝沙箱环境搭建
  • 单片机与FPGA的核心差异、优缺点、编程差异、典型应用场景、选型等对比分析
  • DocsGPT remote接口RCE(CVE-2025-0868)
  • 解析虚拟机与Docker容器化服务的本质差异及Docker核心价值
  • Maven 手动添加 JAR 包到本地仓库笔记
  • 5.2.3 WPF 中 XAML 文件 Converter 使用介绍
  • 基于ACL方式手动建立站点间 IPSec 隧道
  • 牛客 verilog入门 VIP
  • 云原生后端架构:重塑后端开发的新范式
  • bert学习
  • JSON实现动态按钮管理的Python应用
  • ​​AI硬件遭遇“关税风暴“:中国科技企业如何破局?
  • Linux命令-tcpdump
  • 26.OpenCV形态学操作
  • CCF CSP 第37次(2025.03)(2_机器人饲养指南_C++)
  • UE5的 Modify Curve 蓝图节点
  • 俄总理:2024年俄罗斯GDP增长4.3%
  • 首开股份:去年亏损约81.4亿元,是公司发展史上极其困难的一年
  • 神二十6个半小时到站
  • 十二届上海市委第六轮巡视启动,对18家市管单位开展常规巡视
  • 什么是中国好手艺?材美、工巧、器韵、时宜
  • 上海开展数据产品知识产权登记存证试点,243个产品许可收益超20亿元