分享一款AI绘画图片展示和分享的小程序

Logo

🎨奇绘图册

【开源】一款帮AI绘画爱好者维护绘图作品的小程序
查看Demo · 反馈 · github

文章目录

  • 前言
  • 一、奇绘图册是什么?
  • 二、项目全景
  • 三、预览体验
      • 3.1 截图示例
      • 3.2 在线体验
  • 四、功能介绍
    • 4.1 小程序
    • 4.2 服务端
  • 五、安装部署
    • 5.1 快速开始
    • ~~5.2 手动部署~~
    • ~~5.3 使用docker部署~~
        • 1、前置处理
        • 2、运行容器
        • 3、后置处理
  • 六、项目地址
  • 结语


前言

从2024年开始接触AI绘画,玩了大半年stable diffusion + sdwebui 、flux + comfyui,也尝试过hunyuan、cogvideo、svd、ltx等AI生成视频(Mac有点带不动),先后画了上万张图。想记录下自己的成果、不同时期的风格、与朋友分享交流,出于以上三个目的,写了个小程序。
之后又建设了一套生成图片后自动发布到抖音、快手等社交平台的流水线,做了些账号,让绘图更有价值。但由于过千粉之后不实名也没啥变现功能,也没再继续。
趁着蛇年春节的空闲时间,整理了下代码,将基础的图片展示小程序开源,发挥些余热,希望帮每一个AI绘画爱好者记录自己的作品成果


一、奇绘图册是什么?

一款帮AI绘画爱好者记录和维护绘图作品的小程序。旨在让大家能够便捷的拥有一个个人画廊工具。

二、项目全景

在这里插入图片描述
完整的项目结构如图,其中绿色部分是目前开源的内容。虚线部分由于我的Mac M3带不动图生视频模型甚至flux也很吃力,所以本项目主要基于SD及webui实现,理论上都适用,但兼容性未做过多测试,可能存在问题。
社交平台自动发布部分不准备分享,因为喜闻乐见的一公布就容易被封禁失效,有兴趣的可以交流探讨,也可开动脑筋自行实现。
群聊机器人部分由于wechaty等群聊机器人年底全被封了,企业群聊机器人又只能加入组织后才能体验,展示demo十分不便,所以没有整理这部分,也暂不做讨论。后续整理完代码后开源,目前代码实现有点乱,大家可以先关注一波。

三、预览体验

3.1 截图示例

在这里插入图片描述

3.2 在线体验

在这里插入图片描述

  • 由于视频类目不支持,demo中视频使用gif图片兼容
  • 由于审核原因,只放了一点点普通图片
  • 由于示例服务器带宽较低,可能加载稍慢

以上,敬请谅解~

您如果只是自用,且擦边内容较多,也可以考虑只发布到体验版,不上线到正式版。

四、功能介绍

4.1 小程序

如上面架构图中小程序部分所示,小程序部分主体分三个模块:图集、图池、视频。

  • 图集:当提示词等参数不变时,生成的同一批图片视为一个图集,即prompt_hash相同的若干图片展示在一起,并展示对应的画图参数。
  • 图池:展示指定目录中的全部图片。指定图片目录后,系统自动维护里边的图片信息,生成类似github贡献热力图,可按日期查阅不同日期的图片,见证自己的过往成就和风格变化。
  • 视频:展示视频列表。可直接在图池页面选择多张图片自动合成简易的幻灯片式的轮播视频;也可使用文、图生视频的结果(作者Mac M3带不动图生视频,可以自己完善)

4.2 服务端

  • 服务端通过定时任务更新目录中的图片数据,也可主动调用指令。(php artisan sync:images

  • 数据存储在mysql,图片文件可以选择存储在本地磁盘(默认)或对象存储服务,只需调整.env中的FILESYSTEM_DISK=s3,并设置AWS_相关配置。

  • 如果图片文件存储在本地磁盘,可以通过nginx的http_image_filter_module模块压缩图片,节省服务器带宽(小程序封面展示不需要太高清)约10倍;有条件的可以使用对象储存服务,配合CDN资源加载速度更快。
    在这里插入图片描述

  • 通过ffmpeg可以实现简单的多张图片合并成视频,有条件的可以接入大模型的图生视频产物。
    在这里插入图片描述

五、安装部署

微信小程序仓库下载后使用微信开发者工具打开即可配合后端项目使用,这里不做展开,主要介绍服务端部分。

  • 服务端接口基于php实现,使用laravel11框架,依赖php8.2及以上版本。
  • 图片拼接视频部分依赖ffmpegv4.4以上,可参考以往博文:ffmpeg翻页转场动效的安装及使用
  • 如果您没有php或ffmpeg,但有docker,也可以通过docker构建。

5.1 快速开始

🔔项目提供了一键部署脚本,可以直接运行bash deploy.sh(确保网络/代理畅通),会优先检测php版本符合要求执行本地部署;不符合要求时执行docker部署。无需再关注5.1、5.2部分。
其中deploy.sh运行时支持图片路径参数即sh deploy.sh 你的图片目录,不指定路径时默认使用项目根目录的demo文件夹

git clone https://github.com/WYQilin/aigallery-server
cd aigallery-server
bash deploy.sh
# 或 sh depoly.sh 你的图片目录

三行指令即可完成安装,部署完成后到小程序查看即可。

5.2 手动部署

1、 下载源码

git clone https://github.com/WYQilin/aigallery-server
cd aigallery-server

2、修改配置
示例配置里已调整好默认值,可以复制使用,仅调整文件中的 # 数据库# 小程序 部分

cp .env.example .env

3、安装依赖

composer install

4、初始化laravel

php artisan key:generate
php artisan migrate
php artisan storage:link

5、指定图片目录
系统会处理storage/ai_images目录,可以你的图片复制进来或软链到该目录。如何您远程服务器部署可以rsync等指令同步文件夹到服务器。

cp -r 你的图片目录 storage/ai_images #复制
ln -s 你的图片目录 storage/ai_images #软链(docker容器不要使用软链)

6、处理图片
目录设置好后,可以运行脚本处理图片写入数据库

php artisan sync:images --all

设置定时任务,每分钟同步一次图片文件

crontab -e新增一条:
* * * * * cd 项目根路径 && php artisan schedule:run >> /dev/null 2>&1

7、启动服务

php artisan serve

服务启动后重新进入小程序可以即可看到图片列表们。

5.3 使用docker部署

请确保已安装docker,且魔法网络畅通或设置了国内镜像。
docker只为了方便快速体验,建议手动按需部署。

1、前置处理

按5.2中的1、2步完成代码下载并设置好数据库、小程序key等配置。

2、运行容器

如果您熟悉laravel的sail可以直接使用sail启动(laravel专用的docker交互程序,它会自动完成一些事情,且更方便)

由于docker-compose.yml文件中会使用变量,需要从.env文件中先加载他们(或手动修改docker-compos.yml的配置变量)

export $(grep -v '^#' .env | xargs) && docker-compose up
3、后置处理

容器创建并运行后,进入容器中继续执行5.1中第2步之后的各步骤

六、项目地址

微信小程序:https://github.com/WYQilin/aigallery
服务端接口:https://github.com/WYQilin/aigallery-server
(网络不佳时可以搜索gitee同名仓库)
🌟🌟感谢大家star~


结语

有技术性问题或建议优先在对应github仓库提issue,简单交流可以博客留言或私信,感谢大家~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【R语言】回归分析与判别分析

一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型(Linear Models)的主要函数。线性模型是一种统计方法,用于描述一个或多个自变量(预测变量、解释变量)与因变量(响应变量)之间的关系…

Visual Studio Code支持WSL,直接修改linux/ubuntu中的文件

步骤1 开始通过 WSL 使用 VS Code | Microsoft Learn 点击远程开发扩展包。 步骤2 Remote Development - Visual Studio Marketplace 点击install, 允许打开Visual Studio Code。 步骤3 共有4项,一齐安装。 步骤4 在WSL Linux(Ubuntu)中&#xf…

Unreal5从入门到精通之如何在 C++ 中创建 UserWidget

文章目录 前言UUserWidget 子类示例创建我们的 C++ 类的新蓝图子类更改现有蓝图的父类现在我们有了 C++ 基类,下一步做什么?蓝图还是 C++?结论前言 在之前的教程中,我展示了如何在编辑器中创建 UserWidget 蓝图, 在本教程中,我们将创建一个新的基于 C++ 的子类UUserWid…

利用雪花算法+Redis 自增 ID,生成订单号

在我们的项目中,我们需要定义一些全局唯一的 ID,比如订单号,支付单号等等。 这些ID有以下几个基本要求: 1、不能重复 2、不可被预测 3、能适应分库分表 为了生成一个这样一个全局的订单号,自定义了一个分布式 ID …

下载安装运行测试开源vision-language-action(VLA)模型OpenVLA

1. 安装 项目官网OpenVLA 首先按照官网提示的以下代码,执行创建环境->安装最小依赖->git克隆项目等 # Create and activate conda environment conda create -n openvla python3.10 -y conda activate openvla# Install PyTorch. Below is a sample comma…

Postman接口测试的cookie,token,session....鉴权

在接口测试过程中,常常需要进行Cookie、Token或Session等鉴权操作。Postman是一种流行的API开发环境,可以使用其自带的功能来进行这些鉴权操作。 下面是关于Postman接口测试中Cookie、Token和Session鉴权的详细介绍。 Cookie鉴权 在Postman中使用Cook…

深度学习机器学习:常用激活函数(activation function)详解

目录 Sigmoid Function ReLU(Rectified Linear Unit) LeakyReLU(Leaky Rectified Linear Unit) ClippedReLU(Clipped Rectified Linear Unit) PRelu(Parametric ReLU) Tanh&am…

使用llama.cpp在gpu和cpu上运行deepseek-r1 7b的性能对比

使用deepseek-r1 7b模型的q5km量化版本进行测试, gpu上的token解码速度是cpu的近8倍. 测试环境: ubuntu22.04 x86llama.cpp cpu intel 10750h 4.41 tokens / s model size params backend threads test t/s qwen2 7B Q5_K - Medium 5.07 GiB 7.62 B CPU 6 pp512 …

MVC模式和MVVM模式

目录 一、MVC模式和MVVM模式 1. MVC模式 2. MVVM 模式 3.在Qt中的应用示例 4.总结 二、MVC与MVVM模式的共同点和区别 1.共同点 2.区别 3.交互流程 4.总结 MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)是两种…

Numpy简易入门

1.1 认识Numpy数组对象 1.1.1 导入NumPy工具包 #导包并起别名为np import numpy as np1.1.2 创建一个三行五列的数组 data np.arange(15).reshap(3, 5)打印结果&#xff1a; 1.1.3 查询data类型 print(type(data))打印结果&#xff1a; <class numpy.ndarray> nda…

Java中的Spliterator与并行计算

在Java编程中&#xff0c;Spliterator是一个强大的接口&#xff0c;它为集合和数组等数据结构提供了并行处理的能力。Spliterator的设计目标是支持高效并行遍历&#xff0c;同时兼容传统的迭代器模式。本文将详细介绍Spliterator的使用方法&#xff0c;并通过实例展示其在并行计…

Jenkins 新建配置 Freestyle project 任务 六

Jenkins 新建配置 Freestyle project 任务 六 一、新建任务 在 Jenkins 界面 点击 New Item 点击 Apply 点击 Save 回到任务主界面 二、General 点击左侧 Configure Description&#xff1a;任务描述 勾选 Discard old builds Discard old builds&#xff1a;控制何时…

Linux CentOS 7部署Vulhub靶场

漏洞复现环境&#xff1a; 1、Linux操作系统中通过Docker部署的Vulhub靶场&#xff1a; docker docker-compose 2、Nmap扫描工具 一、部署靶场 1、安装Docker 1、下载docker yum install docker 安装完成&#xff0c;如下图&#xff1a; 2、开启docker服务 [rootlocalhost…

DeepSeek笔记(二):DeepSeek局域网访问

如果有多台电脑&#xff0c;可以通过远程访问&#xff0c;实现在局域网环境下多台电脑共享使用DeepSeek模型。在本笔记中&#xff0c;首先介绍设置局域网多台电脑访问DeepSeek-R1模型。 一、启动Ollama局域网访问 1.配置环境变量 此处本人的操作系统是Windows11&#xff0c;…

软件测试技术之跨平台的移动端UI自动化测试(上)

摘要&#xff1a;本文提出一种跨平台的UI自动化测试方案&#xff0c;一方面使用像素级的截图对比技术&#xff0c;解决传统UI自动化测试难以验证页面样式的问题&#xff1b;另一方面用统一部署在服务器端的JavaScript测试代码代替Android和iOS测试代码&#xff0c;大大提高编写…

MySQL深度剖析-InnoDB索引与B+树

1. 什么是B树&#xff1f; B 树是一种自平衡的多叉树&#xff0c;它是 B 树的一种变体。与 B 树不同&#xff0c;B 树的所有数据都存储在叶子节点&#xff0c;非叶子节点仅存储索引&#xff0c;且叶子节点之间通过双向链表相连。这种结构使得 B 树在范围查询和排序操作上具…

win11系统 Docker Desktop提示Docker Engine stopped解决全过程记录

DockerDesktop安装指南以及Windows下WSL2和 Hyper-V相关问题追查 【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 本篇文章主要记录Docker Desktop安装和使用时出现的问题及解决方法&#xff0c;以及后续使用夜神模拟器&#xff0c;关闭了Hyper-V时&am…

如何使用UniApp实现页面跳转和数据传递?

在 UniApp 中&#xff0c;页面跳转和数据传递是基本的功能&#xff0c;允许用户在应用中浏览不同的页面并传递必要的信息。以下是如何实现页面跳转和数据传递的详细步骤和示例。 一、页面跳转 UniApp 提供了几种方式来进行页面跳转&#xff0c;主要包括&#xff1a; uni.nav…

VSCode配合cline实现自动编程

VS Code是微软开发的代码编辑器&#xff0c;可以配合安装不同的插件&#xff0c;支持对不同语言、项目类型的开发。 &#xff08;1&#xff09;安装cline插件&#xff1a;在vscode扩展商店搜索cline&#xff0c;并安装&#xff1b; &#xff08;2&#xff09;选择不同的大模型…

Docker 镜像标签使用

写在前面 当使用命令 docker pull mysql 拉取镜像时&#xff0c;其实等价于如下命令 docker pull mysql:latest latest 是默认的标签&#xff0c;字面上理解为最新版本的镜像&#xff0c;实质上 latest 只是镜像的标签名称&#xff0c;跟具体某个版本号地位一样&#xff0c;…