File size: 4,729 Bytes
a6439b7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import React, { useState, useEffect } from "react";
import Api from "./api";
import { client } from "@gradio/client";

const response_0 = await fetch("https://raw.githubusercontent.com/gradio-app/gradio/main/test/test_files/bus.png");
const exampleImage = await response_0.blob();

const ImageGenerationForm = () => {
  const [loading, setLoading] = useState(false);
  const [output, setOutput] = useState(null);
  const [modelss, setModels] = useState([]);
  const [selectedModel, setSelectedModel] = useState("");

  useEffect(() => {
    // Fetch the available models from your API endpoint
    
    const fetchModels = async () => {
      try {

       
        const app = await client("https://79c67b7467ac6c1889.gradio.live/", {
            headers: {
              Authorization: `Bearer ${Api}`,
            },
          });
        const result = await app.predict("/load_model", [	
                        'ClaireOzzz/allImages',	
                        'ClaireOzzz/PorcelainModel', // string  in 'Your custom model ID' Dropdown component
            ]);
        // const response = await client("https://79c67b7467ac6c1889.gradio.live/", {
        //   headers: {
        //     Authorization: `Bearer ${Api}`,
        //   },
        // });

        // if (!response.ok) {
        //   throw new Error("Failed to fetch models");
        // }

        // // const modelsData = await response.json();
        // const modelsData = await response.predict("/load_model", [		
        //    ' ClaireOzzz/PorcelainModel', // string  in 'Your custom model ID' Dropdown component
        // ]);

        setModels(result);
      } 
      catch (error) {
        console.error("Error fetching models:", error.message);
      }
    };

    //fetchModels();
  }, []);

  const handleModelChange = (event) => {
    setSelectedModel(event.target.value);
  };

  const handleSubmit = async (event) => {
    event.preventDefault();
    setLoading(true);

    const input = event.target.elements.input.value;
    const imageInput = event.target.elements.imageInput.files[0];
    const negativePrompt = event.target.elements.negativePrompt.value;

    const formData = new FormData();
    formData.append("inputs", input);
    formData.append("negative_prompt", negativePrompt);
    formData.append("image", imageInput);
    formData.append("selected_model", selectedModel);

    try {
        const app = await client("https://79c67b7467ac6c1889.gradio.live/");
        const result = await app.predict("/infer", [		
            'ClaireOzzz/PorcelainModel',
            'null',
            '0.1',
           ' https://raw.githubusercontent.com/gradio-app/gradio/main/test/test_files/bus.png',
           "Hello!!",
           "Hello!!",
           'canny',
           '0.1',
           '1',
           '25',
            '-1',
        ]);
        console.log(result.data);
    //   const response = await fetch(
    //     "https://79c67b7467ac6c1889.gradio.live/",
    //     {
    //       method: "POST",
    //       headers: {
    //         Authorization: `Bearer ${Api}`,
    //       },
    //       body: formData,
    //     }
    //   );

    //   if (!response.ok) {
    //     throw new Error("Failed to generate image");
    //   }

    //   const blob = await response.blob();
    //   setOutput(URL.createObjectURL(blob));
    } 
    catch (error) {
      console.error("Error generating image:", error.message);
    } finally {
      setLoading(false);
    }
  };

  return (
    <div className="container al-c mt-3">
      <h1>
        Stable <span>Diffusion</span>
      </h1>
      <p>
        Pellentesque vulputate dignissim enim, et sollicitudin massa
        pellentesque ut. Proin luctus dui ut sem varius eleifend.
      </p>
      <form className="gen-form" onSubmit={handleSubmit}>
        <div>
          <label>Select Model:</label>
          <select value={selectedModel} onChange={handleModelChange}>
            {/* {modelss.map((model) => (
              <option key={model} value={model}>
                {model}
              </option>
            ))} */}
          </select>
        </div>
        <input type="text" name="input" placeholder="type your prompt here..." />
        <input type="file" name="imageInput" accept="image/*" />
        <textarea name="negativePrompt" placeholder="type your negative prompt here..."></textarea>
        <button type="submit">Generate</button>
      </form>
      {/* <div>
        {loading && <div className="loading">Loading...</div>}
        {!loading && output && (
          <div className="result-image">
            <img src={output} alt="art" />
          </div>
        )}
      </div> */}
    </div>
  );
};

export default ImageGenerationForm;