近来,我注意到一些公众号在发布一些插画为主的内容,这些作品配有精美的图片,加上一句有趣的话,多篇文章的阅读量都突破了10万+,这收入不用多说了吧。
其实咱们普通人创作这样的账号,也真的不难,正巧我一直在用的智谱文生图模型又又迭代了,从cogview模型升级至cogview-3 Plus,这次绝对是一流水平。
先简单介绍下,CogView-3-Plus 是智谱新一代的图像生成模型,是 CogView 的升级版本,本次升级使用了 Transformer 架构训练扩散模型,化了效果并验证了参数量提升的效益。
升级后的CogView-3-Plus能够依据用户指令快速生成多种分辨率下的高质量图像,并以其接近行业顶尖模型如MJ-V6和FLUX的效果而闻名,具备将文本描述精准转换为图像的多模态能力,并提供API服务以便于集成使用,同时支持实时推理,确保了图像生成的高效率和快速响应。
所以,赶紧拿来试了一番, 今天就用 多线程 + Flask + 智谱CogView-3-Plus快速搭建一个插画生成器 。
前台展示:
后端运行图:
一、安装依赖
首先,你需要确保已经安装了运行此应用所需的所有依赖库。
安装Flask
Flask是Python的一个Web框架,我们首先需要安装它,你可以通过pip安装Flask:
安装ZhipuAI SDK
这段代码调用了ZhipuAI的SDK,所以你需要安装相关的zhipuai库,可以通过以下命令来安装:
安装图片库pillow
Pillow 库是 Python 中一个非常强大的图片处理库,它提供了丰富的功能,可以轻松地进行图片的读取、编辑、保存等操作。
安装requests
Requests库提供了更简洁的API,使得开发者可以更容易地处理HTTP请求和响应。
二、设置 ZhipuAI API 密钥
在代码中有一个地方需要你提供 ZhipuAI 的 API 密钥:
你需要提前从ZhipuAI获取一个有效的API密钥,并将它填入上述位置,获取地址:https://bigmodel.cn/usercenter/proj-mgmt/apikeys
三、设置IP白名单
别忘记设置IP白名单管理,出现下面的错误就是没设置IP白名单的原因。
设置地址:https://bigmodel.cn/usercenter/safety-mgmt/ip-whitelist
四、代码详细说明
1. 导入必要的库
Flask : 用于创建和运行 Web 应用的 Python 框架。
ZhipuAI : 用于与 ZhipuAI API 进行交互的客户端库。
threading : 用于异步处理图像生成任务,防止主线程被阻塞。
uuid : 用于生成唯一的任务 ID。
requests : 用于向 ZhipuAI API 发送 HTTP 请求,获取图像数据。
io : 用于在内存中处理图像数据。
PIL (Pillow) : 用于处理图像,如加载图像、绘制文字等。
base64 : 用于将图像数据转换为 Base64 编码字符串,方便在 Web 中传输。
2. 初始化 Flask 应用和 ZhipuAI 客户端
Flask(app) : 创建一个 Flask 应用实例,用于运行 Web 服务器。
ZhipuAI(api_key=api_key) : 初始化一个 ZhipuAI 客户端,使用提供的 API 密钥与 ZhipuAI 服务进行交互。
3. 创建共享数据结构
image_results : 用于存储每个任务的生成图像结果(以 Base64 编码的字符串形式)。
task_status : 用于存储每个任务的状态(例如 "processing"、"completed"、"failed")。
lock : 使用 threading.Lock 创建一个锁对象,用于在多线程环境下保护共享数据的访问,确保线程安全。
4. 生成图像的函数
第一个函数的作用是生成图像,它接收多个参数:
prompt : 用户输入的文本描述,用于生成图像。
model : 使用的 AI 模型(如果未提供则使用默认的 cogview-3-plus)。
size : 图像的尺寸(默认是 1024x1024)。
user_id : 可选的用户 ID,用于标识用户, imgtitle: 可选的文本,用户希望显示在生成图像上的文字。
通过 PIL.Image.open 将返回的图像数据加载为 PIL 图像对象,方便进一步操作。
如果用户提供了标题文字(imgtitle),则使用 ImageDraw.Draw(img) 在图像上绘制文字,如果有指定字体(arial.ttf),使用它;如果找不到该字体,则使用系统默认字体。
最后将处理后的图像保存到内存中的字节流(img_byte_array),然后将图像数据转换为 Base64 编码的字符串,便于通过 Web 返回。
5. Flask 路由
首页路由 (/)
路由渲染一个名为 index.html 的页面。该页面允许用户输入文本描述并提交请求生成图像。
生成图像的路由 (/generate-image)
使用 threading.Thread 创建一个新线程来处理图像生成,防止图像生成阻塞主线程,线程完成后会更新任务的状态为 "completed" 或 "failed",返回一个包含任务 ID 的响应,表示图像生成已经开始。
查询任务状态的路由 (/image-result/<task_id>)
该路由用于查询图像生成的状态,根据任务 ID 检查状态:
"processing" : 图像正在生成中,返回 202 状态码。
"completed" : 图像生成完成,返回 Base64 编码的图像。
"failed" : 如果图像生成失败,返回错误信息。
6. 启动 Flask 应用
通过 app.run 启动 Flask 应用,设置 threaded=True 表示应用支持多线程处理请求,可以并发处理多个用户请求。
五、运行Flask应用
确保所有代码文件都已经就绪后,可以运行Flask应用,导航到包含Flask应用的目录,然后执行以下命令:
这将启动Flask开发服务器,默认情况下它会监听:http://127.0.0.1:5000/。
六、访问应用及效果演示
在浏览器中访问应用:
你将看到一个简单的表单,用户可以输入嵌入文字以及文本描述(prompt),然后点击【发送】按钮。
效果如下:
当用户提交表单时,前端会通过AJAX发送一个POST请求到/generate-image,服务器接收到请求后,启动一个新的线程来生成图像,并返回一个task_id,用户可以通过task_id查询图像的生成状态,当图像生成完成后,前端会自动显示图像。
用户在表单中提交文本后,服务器开始生成图像,前端会定期请求/image-result/<task_id>来检查图像是否生成完毕,一旦图像生成完成,浏览器会展示生成的图像。
接下来,给大家分享几种这个赛道的变现方式:
公众号流量主变现:公众号达到 500 粉后开通流量主,一篇 10w+ 的爆文, 就能获得可观的收入。
平台流量分成:你还可以制作图片视频,上传到自媒体平台如视频号,并参与分成计划,只要满足一定条件,就能根据视频的播放量获得相应的流量分成。
小红薯接商单变现:通过分享有趣的图文,吸引粉丝关注,小红薯粉丝数量的增加可以帮你提高接商业广告的价格。
定制红包封面、手机壁纸。。。
其实说了那么多,在惊叹AI作品的精美之余,更多人开始表达对AI绘画的恐惧和焦虑,担心未来是否会被取代而失业。
根据我的亲身体验,我认为AI绘画技术并不会取代个人创作者,而是成为了一个提升工作效率的有力工具,我想那些尝试过AI绘画的人应该都能体会到这一点。
AI绘画作品的质量实际上还是由人来决定的,尽管AI能够创造出各种作品,但最终让这些作品精准呈现的,还是你深思熟虑后提供的描述词,这一点尤为重要,因为工作需要精确和实用性,艺术可能没有固定的标准,但设计必须满足实际应用的需求。
因此,我鼓励大家去尝试AI绘画,而不是对它感到害怕,尽早的尝试可以让AI更好的帮助我们完成工作。
智谱 AI 开放平台:https://bigmodel.cn?utm_source=%E8%8F%9C%E9%B8%9F%E6%95%99%E7%A8%8B&utm_campaign=yrgzh&_channel_track_key=aZO594fk