記事の最後には、
Jianghu の実践のデモがあります。まず、感謝の手を振りましょう、ありがとうラフ、魔法を使わずに Midjourney に無料でアクセスさせてください、ラフを知らない場合は、ラフの紹介文を押してください
1. このブログを書く背景
Laf は最近公式にイベントをリリースしました。イベントのリンクがあり、初心者でもアクセスできます。すぐにリンクをクリックしてサインアップし、素晴らしい賞品を獲得しましょう。
2. アクセスの準備
laf.devでアカウントを登録します (laf.run ではなく laf.dev を使用する必要があることに注意してください)。新規ユーザーは 1 か月間無料で体験できますが、古いユーザーはスキップします
3. インターフェースの作成を開始する
- まず、左下隅の NPM 依存関係に依存関係を追加します。
- 新しいクラウド関数を作成し、任意の名前を選択します
- クラウド関数のコードを編集し、次のコードをすべてコピーして貼り付けます。このサンプル コードは laf によって提供されており、自分で変更できます。
import cloud from '@lafjs/cloud'
import {
Midjourney, MidjourneyMessage } from 'midjourney'
const SERVER_ID = '' // Midjourney 服务 ID
const CHANNEL_ID = '' // Midjourney 频道 ID
const SALAI_TOKEN = '' // Midjourney 服务 Token
const Limit = 100
const MaxWait = 3
// 初始化Midjourney
const client = new Midjourney({
ServerId: SERVER_ID,
ChannelId: CHANNEL_ID,
SalaiToken: SALAI_TOKEN,
Debug: true,
SessionId: SALAI_TOKEN,
Limit: Limit,
MaxWait: MaxWait
});
// 云函数主入口代码
export default async function (ctx: FunctionContext) {
const {
type, param } = ctx.body
switch (type) {
case 'RetrieveMessages': // 查询生图结果
return await RetrieveMessages(param)
case 'imagine': // 生成图片
return await imagine(param)
case 'upscale': // 放大图片
return await upscale(param)
case 'variation': // 变换图片
return await variation(param)
}
}
// 查询最近消息
async function RetrieveMessages(param) {
console.log("RetrieveMessages")
const client = new MidjourneyMessage({
ChannelId: CHANNEL_ID,
SalaiToken: SALAI_TOKEN,
});
const msg = await client.RetrieveMessages();
console.log("RetrieveMessages success ", msg)
return msg
}
// 创建生图任务
async function imagine(param) {
console.log("imagine", param)
const {
question, msg_Id } = param
const msg = await client.Imagine(
`[${
msg_Id}] ${
question}`,
(uri: string, progress: string) => {
console.log("loading", uri, "progress", progress);
}
);
console.log("imagine success ", msg)
return true
}
// upscale 放大图片
async function upscale(param) {
console.log("upscale", param)
const {
question, index, id, url } = param
const hash = url.split("_").pop()?.split(".")[0] ?? ""
console.log(hash)
const msg = await client.Upscale(
question,
index,
id,
hash,
(uri: string, progress: string) => {
console.log("loading", uri, "progress", progress);
}
);
console.log("upscale success ", msg)
return msg
}
// variation 变换图片
async function variation(param) {
console.log("variation", param)
const client = new Midjourney({
ServerId: SERVER_ID,
ChannelId: CHANNEL_ID,
SalaiToken: SALAI_TOKEN,
Debug: true,
SessionId: SALAI_TOKEN,
Limit: Limit,
MaxWait: 100
});
const {
question, index, id, url } = param
const hash = url.split("_").pop()?.split(".")[0] ?? ""
const msg = await client.Variation(
question,
index,
id,
hash,
(uri: string, progress: string) => {
console.log("loading", uri, "progress", progress);
}
);
console.log("variation success ", msg)
return msg
}
初期化中に値のないパラメータが 3 つあることに気づいたかもしれません。アクティビティのリンクをよく読んで、
右上隅にある「公開」をクリックすると、アプリが公開されます。どうでしょうか?タイトルに嘘はありませんでしたね、3分くらいでしたね。
4. デバッグインターフェース
-
生成された画像
msg_Id は自由に入力できますが、チャネル内の他のユーザーとの重複を避けるために、単純すぎないことが最善です。 -
RetrieveMessages は、現在のチャネルのすべてのユーザーによって生成された最新の 50 件の結果を取得します。
画像内の赤い線に注目してください。これは上記のものです。msg_Id
この ID を通じて独自の結果をフィルタリングできます。attachments
対応する URL はあなたのものです。へのリンク写真 -
画像を変換します (調整したいものを選択してください)
type
固定パスのバリエーションid
2 番目のステップの msg_Id フィルタリングを通じて取得されたデータの ID です。url
対応する添付ファイル内の URL ですquestion
あなた自身の質問ですindex
写真のシリアル番号です。写真のシリアル番号については、下の写真を参照してください。
- 画像の拡大は
画像パラメータの調整と似ており、タイプをアップスケールに変更するだけです。
5. インターフェースの呼び出し方法
右上隅にある公開ボタンの横にあるリンクをコピーして、郵便配達員またはフロントエンド ページで呼び出します。フロントエンド インターフェイスはあなた次第です。アイデアや作品を交換するためにグループに参加することを歓迎します。
6、終わり
アクセスはここにあります。LAF 公式に感謝します。デモはここにあります