【AI图像生成网站&Golang】图床上传与图像生成API搭建

AI图像生成网站

目录

一、项目介绍

二、雪花算法

三、JWT认证与令牌桶算法

四、项目架构

五、图床上传与图像生成API搭建

六、项目测试与优化


五、图床上传与图像生成API搭建

在项目中,我们通过整合 Go 和 FastAPI 实现了图像的上传和生成功能。本文将介绍该功能模块的设计与实现细节,主要包括图床上传 API 和图像生成 API 的开发。

1. 图床上传

        SM.MS 是一个免费的在线图床服务,提供简单快速的图片上传和托管功能。用户可以通过 API 上传图片并获取公开访问的链接,这在构建需要处理图片的应用程序时非常方便。
        本项目的注册、创建分组、图像生成和作品上传等功能中,均使用到了SMMS图床服务提供的API,通过将本地 Base64 编码的图片文件上传到图床,来获取图像的永久链接。

上传流程

  • Base64 解码:将用户上传的图片从 Base64 编码格式转换为二进制流。
  • 多部分表单提交:通过 multipart/form-data 格式上传图片文件,适配 SM.MS API 的接口要求。
  • API Token 授权:使用 Authorization 头携带 API Token 确保安全性。

代码如下:

// UploadImageToSMMS 上传图像到 SM.MS 图床
func UploadImageToSMMS(base64Image string) (string, error) {
   
	url := "https://sm.ms/api/v2/upload"

	if strings.HasPrefix(base64Image, "data:image") {
   
		base64Image = strings.Split(base64Image, ",")[1]
	}

	// 将 Base64 图片解码为文件字节流
	decodedImage, err := base64.StdEncoding.DecodeString(base64Image)
	if err != nil {
   
		return "", fmt.Errorf("Base64 解码失败: %v", err)
	}

	// 创建一个缓冲区和多部分表单写入器
	body := &bytes.Buffer{
   }
	writer := multipart.NewWriter(body)

	// 创建文件字段
	part, err := writer.CreateFormFile("smfile", "image.png")
	if err != nil {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值