«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Создайте бесплатный генератор изображений AI с помощью ReactJS

Создайте бесплатный генератор изображений AI с помощью ReactJS

Опубликовано 8 ноября 2024 г.
Просматривать:284

Привет, разработчики,
Сегодня я собираюсь показать вам, как создать генератор изображений с помощью ReactJS, и все это можно использовать бесплатно благодаря лабораториям Шварцвальда и Together AI.

Шаг 1: Настройка проекта

В этом уроке мы будем использовать Vite для инициализации приложения и Shadcn для пользовательского интерфейса. Я предполагаю, что вы уже настроили проект и установили Shadcn.

Шаг 2. Установите пакет Together AI

Нам необходимо установить пакет Together AI, чтобы получить доступ к бесплатной модели Flux для генерации изображений.
Запустите следующую команду в своем терминале

npm i together-ai

Шаг 3. Создание пользовательского интерфейса

Теперь давайте создадим пользовательский интерфейс для нашего приложения. Ниже приведен полный код компонента генератора изображений. он включает ввод текста для подсказок. раскрывающийся список для выбора соотношения сторон.
Имейте в виду, нам нужно использовать «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

Заключительные мысли

Благодаря этой настройке у вас теперь есть простое приложение ReactJS, которое может генерировать и загружать изображения, сгенерированные искусственным интеллектом.
Спасибо за чтение! Если вы считаете этот пост интересным, не стесняйтесь ставить ему лайк. Приятного кодирования!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/nhd2106/image-generator-app-for-free-2p0d?1. Если обнаружено какое-либо нарушение прав, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3