[개발] stable diffusion 이미지를 api 를 통해 저장 해보자
개요
댓글만 입력하면 이미지를 그려주는 봇을 만들어 보려 함.
동작 흐름
- 댓글 감지
- SD API 를 호출하여 이미지 그리기 - 댓글 내용 전달
- 이미지 업로드
- 대 댓글로 업로드 된 이미지 올려주기
우선 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();

!sdbot sexy girl, show me the money
!sdbot sexy girl
created by @sdbot - @wonsama

created by @sdbot - @wonsama

[광고] 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
