「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ReactJS を使用して無料の AI 画像ジェネレーターを構築する

ReactJS を使用して無料の AI 画像ジェネレーターを構築する

2024 年 11 月 8 日に公開
ブラウズ:421

開発者の皆さん、
今日は、ReactJS を使用して画像ジェネレーターを作成する方法を説明します。Black Forest Labs と Together AI のおかげで、すべて無料で使用できます。

ステップ 1: プロジェクトのセットアップ

このチュートリアルでは、Vite を使用してアプリを初期化し、UI に Shadcn を使用します。すでにプロジェクトがセットアップされ、Shadcn がインストールされていると仮定します。

ステップ 2: Together AI パッケージをインストールする

画像生成用の無料の Flux モデルにアクセスするには、Togetter AI パッケージをインストールする必要があります。
ターミナルで次のコマンドを実行します

npm i together-ai

ステップ 3: UI の構築

それでは、アプリの UI を作成しましょう。以下は、画像生成コンポーネントの完全なコードです。プロンプトのテキスト入力が含まれています。アスペクト比を選択するためのドロップダウン。
無料なので「black-forest-labs/FLUX.1-schnell-Free」を使用する必要があることに注意してください。

import { useRef, useState } from "react";
import Together from "together-ai";
import { ImagesResponse } from "together-ai";
import { Button } from "@/components/ui/button";
import {
  Select,
  SelectContent,
  SelectItem,
  SelectTrigger,
  SelectValue,
} from "@/components/ui/select";
import { Textarea } from "@/components/ui/textarea";
import { motion } from "framer-motion";
import { Separator } from "@/components/ui/separator";
import { DownloadIcon } from "@radix-ui/react-icons";
import { save } from "@tauri-apps/plugin-dialog";
import { writeFile } from "@tauri-apps/plugin-fs";

function App() {
  const [input, setInput] = useState("");
  const [imageUrl, setImageUrl] = useState("");
  const [ratio, setRatio] = useState("9:16");
  const [isLoading, setIsLoading] = useState(false);
  const [downloading, setDownloading] = useState(false);
  const imageRef = useRef(null);

  const hRatio = ratio.split(":").map(Number)[0];
  const vRatio = ratio.split(":").map(Number)[1];

  const width = hRatio === 1 ? 512 : hRatio * 64;
  const height = vRatio === 1 ? 512 : vRatio * 64;

  const together = new Together({
    apiKey: import.meta.env.VITE_TOGETHER_API_KEY,
  });

  const handleGenerateImage = async () => {
    setIsLoading(true);

    try {
      console.log(width, height);
      const response: ImagesResponse = await together.images.create({
        model: "black-forest-labs/FLUX.1-schnell-Free",
        prompt: input,
        width: width,
        height: height,
        // @ts-expect-error response_format is not defined in the type
        response_format: "b64_json",
      });

      const base64Image = response.data[0].b64_json;
      const dataUrl = `data:image/png;base64,${base64Image}`;
      setImageUrl(dataUrl);
    } catch (error) {
      console.error("Error generating image:", error);
      // You might want to add some error handling UI here
    } finally {
      setIsLoading(false);
    }
  };

  const handleDownloadImage = async () => {
    if (imageUrl) {
      setDownloading(true);
      try {
        // Remove the data URL prefix
        const base64Data = imageUrl.replace(/^data:image\/\w ;base64,/, "");

        // Convert base64 to binary
        const imageBuffer = Uint8Array.from(atob(base64Data), (c) =>
          c.charCodeAt(0)
        );

        // Open a save dialog
        const filePath = await save({
          filters: [
            {
              name: "Image",
              extensions: ["png"],
            },
          ],
        });

        if (filePath) {
          // Write the file
          await writeFile(filePath, imageBuffer);
          console.log("File saved successfully");
        }
      } catch (error) {
        console.error("Error saving image:", error);
      } finally {
        setDownloading(false);
      }
    }
  };

  return (
    

AI Image Generator for "Thảo"

Generated Image

{imageUrl ? ( Generated
) : (

Your generated image will appear here

)}
); } export default App;

Build a Free AI Image Generator with ReactJS

Build a Free AI Image Generator with ReactJS

最終的な考え

このセットアップにより、AI 生成の画像を生成およびダウンロードできるシンプルな ReactJS アプリが完成しました。
読んでいただきありがとうございます!この投稿が興味深いと思われた場合は、遠慮せずに「いいね!」を押してください。コーディングを楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/nhd2106/image-generator-app-for-free-2p0d?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3