LiuJuan20260223Zimage实战教程:使用curl命令行调用Xinference REST API生成图片
LiuJuan20260223Zimage实战教程使用curl命令行调用Xinference REST API生成图片想用代码直接生成LiuJuan的图片而不是在网页上点来点去没问题今天咱们就来聊聊怎么用最基础的curl命令行直接调用Xinference的REST API让LiuJuan20260223Zimage模型为你服务。这招特别适合想批量生成图片或者想把图片生成功能集成到自己程序里的朋友。简单来说Xinference是一个帮你轻松部署和管理AI模型的工具而LiuJuan20260223Zimage是基于Z-Image模型专门训练来生成LiuJuan风格图片的一个版本。我们之前可能用过它的Gradio网页界面但今天我们要绕过界面直接和模型背后的“引擎”对话。1. 准备工作确认你的模型服务在开始敲命令之前我们得先确保模型服务已经跑起来了。毕竟你得先有“厨房”才能开始“做饭”。1.1 检查服务状态按照镜像的使用说明模型启动后日志会记录在/root/workspace/xinference.log这个文件里。我们可以用下面的命令看一眼cat /root/workspace/xinference.log如果一切顺利你会在日志的末尾看到模型加载成功的提示信息。这表示Xinference服务已经启动并且LiuJuan20260223Zimage模型也准备就绪正在监听我们的请求。1.2 了解API端点Xinference启动后会提供一个REST API服务。通常这个服务运行在服务器的某个端口上比如7860或9997具体取决于部署配置。我们需要知道这个服务的地址base_url和模型对应的唯一标识model_uid。对于通过CSDN星图镜像部署的情况服务通常就在本机。一个常见的API基础地址是http://localhost:9997。而model_uid是Xinference用来区分不同模型的ID对于LiuJuan20260223Zimage它可能是一个类似liujuan20260223zimage的字符串。如果你不确定可以查阅镜像的文档或者通过Xinference的API来列出所有已加载的模型。2. 核心实战使用curl调用文生图API现在进入正题。Xinference的REST API设计通常遵循OpenAI的格式文生图功能对应一个POST请求。2.1 你的第一个API调用我们从一个最简单的例子开始。假设我们的Xinference服务运行在http://localhost:9997模型UID是liujuan20260223zimage。打开你的终端输入以下命令curl -X POST http://localhost:9997/v1/images/generations \ -H Content-Type: application/json \ -d { model: liujuan20260223zimage, prompt: LiuJuan, n: 1, size: 512x512 }我们来拆解一下这个命令-X POST: 指定这是一个POST请求。http://localhost:9997/v1/images/generations: 这是Xinference提供的文生图API端点地址。-H Content-Type: application/json: 告诉服务器我们发送的数据是JSON格式的。-d ...: 这里面就是请求的具体内容数据体model: 指定我们要使用哪个模型这里填我们的模型UID。prompt: 提示词也就是你想让模型画什么。这里我们输入最简单的LiuJuan。n: 生成图片的数量这里设为1。size: 生成图片的尺寸512x512是一个常用尺寸。2.2 理解API的返回结果敲下回车后服务器会处理你的请求并把结果返回给你。结果通常也是一个JSON格式的字符串看起来可能像这样{ created: 1678886400, data: [ { url: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAIABJREFUeJzt3Xl8VOX9//H3mSSTfSEJ... } ] }最关键的的信息在data[0].url里。它不是一个普通的网页链接而是一个Data URL。冒号后面的那一长串字符就是你的图片经过Base64编码后的数据。2.3 将Base64图片数据保存为文件我们拿到了图片的“密码”Base64字符串现在需要把它“翻译”回真正的图片文件。这可以通过一行命令完成# 假设我们把上面的JSON响应保存到了一个叫 response.json 的文件里 # 我们可以用 jq 工具提取出Base64部分并用 base64 命令解码 jq -r .data[0].url response.json | sed s/^data:image\/[a-z]*;base64,// | base64 -d generated_image.png如果你没有jq工具或者想用一个更直接的方法也可以把上面curl命令和保存步骤合二为一curl -X POST http://localhost:9997/v1/images/generations \ -H Content-Type: application/json \ -d { model: liujuan20260223zimage, prompt: LiuJuan, n: 1, size: 512x512 } | python3 -c import sys, json, base64 result json.load(sys.stdin) # 提取并去除Data URL前缀 img_data result[data][0][url].split(,)[1] # 解码并写入文件 with open(liujuan_generated.png, wb) as f: f.write(base64.b64decode(img_data)) print(图片已保存为 liujuan_generated.png) 这个命令在调用API后直接用一段Python代码处理返回的JSON提取Base64数据并解码保存成liujuan_generated.png文件。现在打开这个文件你应该就能看到模型生成的LiuJuan图片了3. 进阶技巧玩转生成参数只会生成默认图片可不够。Xinference的API通常支持更多参数让我们能控制生成的细节。3.1 调整图片尺寸和质量size参数不只有512x512。常见的还有256x256,768x768,1024x1024等。注意更大的尺寸可能需要更多的显存和生成时间。curl -X POST http://localhost:9997/v1/images/generations \ -H Content-Type: application/json \ -d { model: liujuan20260223zimage, prompt: LiuJuan in a garden, n: 1, size: 768x768 }3.2 使用更复杂的提示词提示词是控制生成内容的核心。你可以描述场景、风格、细节。curl -X POST http://localhost:9997/v1/images/generations \ -H Content-Type: application/json \ -d { model: liujuan20260223zimage, prompt: A portrait of LiuJuan, anime style, detailed face, smiling, soft lighting, masterpiece, best quality, n: 1, size: 512x512 }3.3 批量生成与种子控制如果你想一次生成多张图或者希望结果可复现这两个参数很有用。n: 一次生成多张。例如n: 4会生成4张不同的图片。seed: 随机数种子。给一个固定的数字如42只要提示词和其他参数不变每次生成都会得到几乎一样的图片。这在调试和对比时非常有用。# 批量生成4张可复现的图片 curl -X POST http://localhost:9997/v1/images/generations \ -H Content-Type: application/json \ -d { model: liujuan20260223zimage, prompt: LiuJuan wearing a hat, n: 4, size: 512x512, seed: 12345 }4. 脚本化与自动化命令行最大的优势就是可以脚本化。你可以写一个Shell脚本或Python脚本来批量处理不同的提示词。4.1 简单的Shell脚本示例创建一个文件比如叫generate_liujuan.sh#!/bin/bash API_URLhttp://localhost:9997/v1/images/generations MODEL_UIDliujuan20260223zimage OUTPUT_DIR./generated_images # 创建输出目录 mkdir -p $OUTPUT_DIR # 提示词列表 prompts( LiuJuan LiuJuan smiling LiuJuan with long hair LiuJuan in traditional Chinese clothing ) # 遍历提示词并生成图片 for i in ${!prompts[]}; do PROMPT${prompts[$i]} echo 正在生成: $PROMPT # 使用curl调用API并用Python处理结果并保存 curl -s -X POST $API_URL \ -H Content-Type: application/json \ -d { \model\: \$MODEL_UID\, \prompt\: \$PROMPT\, \n\: 1, \size\: \512x512\, \seed\: 2024 } | python3 -c import sys, json, base64 result json.load(sys.stdin) img_data result[data][0][url].split(,)[1] filename f$OUTPUT_DIR/liujuan_{$i}.png with open(filename, wb) as f: f.write(base64.b64decode(img_data)) print(f 已保存至: {filename}) done echo 批量生成完成给脚本添加执行权限并运行chmod x generate_liujuan.sh ./generate_liujuan.sh4.2 集成到你的应用中掌握了curl调用API的方法你就可以轻松地将LiuJuan20260223Zimage的图片生成能力集成到任何支持HTTP请求的程序中比如你的网站后端、自动化工具、聊天机器人等。核心步骤就是构造一个类似的JSON请求发送到正确的API地址然后处理返回的Base64图片数据。5. 总结通过这篇教程我们跳过了Gradio的图形界面直接使用curl命令与Xinference的REST API交互实现了对LiuJuan20260223Zimage模型的调用。我们学习了基础调用如何用最简单的curl命令生成一张图片并理解返回的Base64数据。结果处理如何将API返回的Data URL解码并保存为真正的图片文件。参数控制如何使用size,seed,n等参数来控制图片的尺寸、可复现性和生成数量。脚本自动化如何将单个命令封装成脚本实现批量、自动化的图片生成。这种方式为你提供了极大的灵活性让你能够以编程的方式将AI图片生成能力无缝嵌入到自己的工作流或应用程序中。下次当你想用代码创造LiuJuan的世界时就知道该怎么做了。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。