【AI图像生成网站Golang】项目介绍
AI图像生成网站
目录
一、项目介绍
二、雪花算法
三、JWT认证与令牌桶算法
四、项目架构
五、图床上传与图像生成API搭建
六、项目测试与调试(等待更新)
简介
本教程将手把手教你如何从零开始构建一个简单的AI图像生成网站。网站主要包含用户注册、图像生成、分类管理等功能,使用Golang作为后端开发语言,前端采用Vue.js,数据存储使用MySQL。通过本项目,您将学习如何使用Go语言搭建API服务,如何与外部图床和AI图像生成API集成,最终实现一个简单的AI图像生成网站。
技术栈: Golang + Vue.js + MySQL
项目地址:https://github.com/Gezelligheid1010/Image-Processing-Tool-with-Go-AI
网站功能概览
本项目实现的页面结构和功能如下:
项目共有六个页面,分别实现了注册登录功能、作品分组管理和作品管理,以及图像生成功能。
用户注册与登录
提供新用户注册和已有用户登录功能,支持表单验证,确保用户数据的有效性和安全性。登录成功后生成JWT令牌,用户可在授权状态下访问其他页面。


分组管理
显示用户创建的所有分类。用户可以查看已创建的分组及其中作品的概览,并可通过点击进入分组详情页查看具体内容。

创建分组
允许用户自定义创建新的分组,为图像生成作品进行分组管理。用户可输入分组名称、描述和封面,并提交保存到数据库。

作品管理
进入具体分组后,用户可浏览该分组下的所有作品,支持缩略图展示和详细信息查看,方便用户管理和查看作品内容。

创建作品页面
用户可以在此页面上传图像文件,调用图床API上传图像并生成URL,将URL传递给AI图像生成API生成新作品。生成的作品将存储在指定分类中。



导航与路由
设计清晰、直观的页面导航和路由,使用户可以快速切换页面。网站主要用于实现功能的路由包括:
- 注册/登录后的主页跳转:用户完成注册或登录后,导航至分组展示页面。
- 分组展示与详情页跳转:点击分组展示页面中的分组项目,即可跳转到对应的分组详情页。
- 分组创建与作品创建导航:通过创建按钮,用户可直接进入分组创建和作品创建页面,完成图像生成和分组管理。
- 分组删除与作品删除导航:通过删除按钮,用户可直接进入分组创建和作品创建页面,完成图像生成和分类管理。
以下是项目中所涉及的所有路由介绍:
| 路径 | 请求方法 | 功能描述 | 中间件 | 备注 |
|---|---|---|---|---|
/ | GET | 加载主页,显示HTML页面 | 无 | 主页入口,提供基本的HTML内容 |
/static | Static | 加载静态文件 | 无 | 主要用于加载CSS、JS、图片等前端资源 |
/swagger/*any | GET | 注册Swagger文档 | 无 | Swagger用于自动生成和查看API文档,方便开发和测试 |
/api/v1/login | POST | 用户登录 | 限流中间件 | 处理用户登录请求,验证用户凭证并返回Token |
/api/v1/signup | POST | 用户注册 | 限流中间件 | 处理新用户注册信息,创建账户 |
/api/v1/refresh_token | GET | 刷新访问令牌 | 限流中间件 | 为已登录用户刷新访问Token,保持登录状态 |
/api/v1/createCategory | POST | 创建分类 | JWT认证中间件 + 限流中间件 | 用于创建作品分类,便于对作品进行分组 |
/api/v1/category | GET | 获取分类列表 | JWT认证中间件 + 限流中间件 | 查询所有已创建的分类,返回分类信息列表 |
/api/v1/categoryDetail/:category_id | GET | 获取分类中的作品 | JWT认证中间件 + 限流中间件 | 查看指定分类下的作品详情 |
/api/v1/deleteCategory/:category_id | DELETE | 删除分类 | JWT认证中间件 + 限流中间件 | 删除指定分类,清理不再需要的分类 |
/api/v1/deleteWorks | DELETE | 删除作品,传入列表 | JWT认证中间件 + 限流中间件 | 批量删除指定的作品 |
/api/v1/uploadWork | POST | 上传作品 | JWT认证中间件 + 限流中间件 | 用户上传作品,保存并处理上传的作品 |
/api/v1/processImage | POST | 仅处理图片 | JWT认证中间件 + 限流中间件 | 接收上传的图片并进行特定的图像处理操作 |
/debug/pprof/*any | GET | 注册pprof调试路由 | 无 | pprof为Go语言的性能分析工具,帮助识别瓶颈和优化代码性能 |
| NoRoute | Any | 未知路径返回404 | 无 | 对于未匹配的路径返回404响应,提示路径无效 |
- 静态文件:用于存储和提供前端资源(如CSS、JS、图片等),加载静态文件可以提高页面加载速度和用户体验。
- Swagger文档:一种API文档生成和交互工具,可以根据代码生成接口文档,方便开发者查看和测试API,提升开发和调试效率。
- JWT认证:JWT(JSON Web Token)是一种常用的认证方式,确保访问资源的用户经过身份验证。
- 限流中间件:通过令牌桶算法限制请求速率,防止服务器资源被恶意占用。
- pprof调试路由:提供性能分析工具,帮助识别代码中的瓶颈,如内存泄漏、CPU占用高等问题,优化服务器性能。
相关文章:
【AI图像生成网站Golang】项目介绍
AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与调试(等待更新) 简介 本教程将手把手教你如何从零开始构建一个简单的AI图像生成网站。网站主要包含用户注册、图像生成、分类管理等…...
对称加密算法DES的实现
一、实验目的 1、了解对称密码体制基本原理 2、掌握编程语言实现对称加密、解密 二、实验原理 DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密…...
Spring Boot 启动时修改上下文
Spring Boot 启动时修改上下文 为了让项目在启东时,加载到封装的JAR中的国际化文件在封装JAR是增加以下配置类可用于更改启动上下文中的信息依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoco…...
传奇996_19——常用函数
打印 打印到公告 lua版 sendmsg(*actor*, ConstCfg.notice.own, {"Msg":"<font color\#ff0000\>即将更新属性2222!!!</font>","Type":9}) sendmsg(*actor*, 1, {"Msg":"<fon…...
计算机毕业设计Python+Neo4j知识图谱医疗问答系统 大模型 机器学习 深度学习 人工智能 大数据毕业设计 Python爬虫 Python毕业设计
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【Python】如何设置VSCode中的Pylint,消除各种没有必要的警告
前言 最近打开VSCode,编辑之前创建的Python项目,突然发现多了一堆报错和警告,如下图所示。 就非常吓人,因为之前这个项目是没有任何报错的,我赶紧试着运行了一下,还好,可以正常运行,…...
游戏引擎学习第14天
视频参考:https://www.bilibili.com/video/BV1iNUeYEEj4/ 1. 为什么关注内存管理? 内存分配是潜在的失败点: 每次进行内存分配(malloc、new等)时,都可能失败(例如内存不足)。这种失败会引入不稳…...
关于mysql中的锁
mysql中包含的锁分为: 一、全局锁 二、表锁 三、行锁 一、全局锁 全局锁的力度是最大的,全局锁对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句…...
机器学习-4:机器学习的建模流程
机器学习的建模流程 流程为: 原始数据 --> 数据预处理 --> 特征工程 --> 建模 --> 验证。 原始数据收集 所有AI或机器学习的基础就是数据,没有数据就什么都做不了,在搭建一个系统之前首要考虑的就是有没有足够多的数据可以支撑这…...
Android 6年经验面试总结 2024.11.15
背景:深圳 面过12家中大厂、4家中小厂,通过4家中大厂,2家offer。 针对六年的求职面试总结:项目经验70%30%基础(基础应该必会) 对于上来就问八股文的公司,对于已经工作了5年以上的开发来说&…...
R语言数据分析可视化——summarytools包的使用
R语言中的summarytools包通过提供能够用最少的代码生成数据全面摘要的功能,使数据分析更加简单。summarytools包提供了一种简单的方法来生成数据集的摘要统计信息,包括描述性统计、频率表、交叉表、缺失值、异常值、相关性、线性回归、ANOVA、卡方检验等。本文将介绍如何使用…...
转型一年半,虎牙直播的第二增长曲线喜忧参半
文:互联网江湖 作者:刘致呈 最近,虎牙公司(NYSE:HUYA)公布了2024年第三季度财报。 表现怎么样呢?从财务数据上看,这份成绩单有点不尽人意。 报告期内,虎牙实现营收15.38亿元&…...
makefile笔记
makefile 在 Makefile 中,预定义的变量(也称为内置变量)提供了对构建过程中的默认值和特殊值的访问。这些变量通常由 Make 自动设置,并且可以覆盖它们以改变 Make 的行为。下面是 Make 环境中常见的几个内置变量及其用途…...
Rewar Model的输出(不包含训练)
这里写自定义目录标题 介绍模型推理的输出过程方案原始Token输出RM输出(回归任务) 介绍 奖励函数模型 (Reward Model) 是人工智能 (AI) 中的一种方法,模型因其对给定提示的响应而获得奖励或分数。现在的文章清一色的讲解RM的训练,…...
Python调用API翻译Excel中的英语句子并回填数据
一、问题描述 最近遇到一个把Excel表中两列单元格中的文本读取,然后翻译,再重新回填到单元格中的案例。大约有700多行,1400多个句子,一个个手动复制粘贴要花费不少时间,而且极易出错。这时,我们就可以请出…...
SQL面试题——抖音SQL面试题 最大在线用户数
最大在线用户数 下面的数据记录了一个直播平台上用户进入平台和离开平台的情况 +---+-------------------+-----+ | id| etime| type| +---+-------------------+-----+ | 1|2021-06-10 10:00:00|enter| | 1|2021-06-10 19:00:00|leave| | 2|2021-06-10 11:0…...
前端知识点---Window对象(javascript)了解
Window对象 在JavaScript中,当你在非严格模式下的全局作用域中使用this时,它会引用全局对象。在浏览器环境中,这个全局对象就是Window。 01什么是 Window 对象? Window 是浏览器提供的一个全局对象,它代表了浏览器的…...
llama factory lora 微调 qwen2.5 7B Instruct模型
项目背景 甲方提供一台三卡4080显卡 需要进行qwen2.5 7b Instruct模型进行微调。以下为整体设计。 要使用 LLaMA-Factory 对 Qwen2.5 7B Instruct模型 进行 LoRA(Low-Rank Adapters)微调,流程与之前提到的 Qwen2 7B Instruct 模型类似。LoRA …...
类和对象——拷贝构造函数,赋值运算符重载(C++)
1.拷⻉构造函数 如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数。 // 拷贝构造函数//d2(d1) Date(const Date& d) {_year d._yea…...
Android 关于使用videocompressor库压缩没有声音和异常的问题
原库地址 https://gitcode.com/gh_mirrors/vi/VideoCompressor/overview 这个库用起来比较方便,使用Android原生的MediaCodecmp4parser的方式进行压缩,不用接入so库也不用适配cpu 问题 接口库后你会发现过时了,所以你一阵捣鼓后你发现压缩…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
