[개발] stable diffusion 이미지를 api 를 통해 저장 해보자

in #kr3 years ago

개요

댓글만 입력하면 이미지를 그려주는 봇을 만들어 보려 함.

동작 흐름

  1. 댓글 감지
  2. SD API 를 호출하여 이미지 그리기 - 댓글 내용 전달
  3. 이미지 업로드
  4. 대 댓글로 업로드 된 이미지 올려주기

우선 2,3 번에 집중하여 API 를 호출하고 이미지를 올려 주는 부분까지 확인 해봤다

작업 결과

이미지가 imgbb 에 잘 올라가는 것을 확인할 수 있다.
( 무료로 6개월간 보존 해 주기 때문에 정말 좋은 서비스 같다 )

문제라면 로컬 PC 를 24/7 켜 놓아야 되는 부분인데 전기세가 좀 걱정 되긴 하지만 우선은 한번 어느정도는 운용 해보려 한다 :)

관련 소스코드

import FormData from "form-data";
import axios from "axios";
import dotenv from "dotenv";
import fs from "fs";
dotenv.config();

const { IMGBB_API_KEY } = process.env.IMGBB_API_KEY;
const { SD_API_URL } = process.env.SD_API_URL;

function saveLocal(respose, path = "output.png") {
  let buffer = Buffer.from(respose.data.images[0], "base64");
  fs.writeFileSync("output.png", buffer);
}

async function init() {
  // get stable diffusion image
  let resSD = await axios({
    method: "post",
    url: `${SD_API_URL}/sdapi/v1/txt2img`,
    data: {
      prompt: "master piece",
      negative_prompt: "nsfw",
      width: 768,
      height: 512,
    },
  });

  // save image to local
  saveLocal(resSD);

  // upload to imgbb
  // 이미지 보관은 15552000 초 = 최대 180 일 ( 6개월 ) 보관 가능함
  let formData = new FormData();
  formData.append("image", resSD.data.images[0]);
  let resBB = await axios({
    method: "post",
    url: `https://api.imgbb.com/1/upload?expiration=15552000&key=${IMGBB_API_KEY}`,
    headers: {
      "Content-type": "application/x-www-form-urlencoded",
    },
    data: formData,
  });

  console.log(resBB.data.data.url);
}
init();
Sort:  

!sdbot sexy girl, show me the money

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

!sdbot sexy woman

!sdbot sexy woman

!sdbot sexy woman

!sdbot sexy woman

!sdbot sexy woman

!sdbot sexy woman

!sdbot sexy woman

stable diffusion bot by @wonsama

Coin Marketplace

STEEM 0.04
TRX 0.31
JST 0.073
BTC 63406.11
ETH 1675.05
USDT 1.00
SBD 0.41