侧边栏壁纸
博主头像
码途 博主等级

行动起来,活在当下

  • 累计撰写 72 篇文章
  • 累计创建 0 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

gradio - 笔记

htmltoo
2024-10-07 / 0 评论 / 0 点赞 / 41 阅读 / 0 字

pip install gradio

1-ip,端口

gradio_interface().launch(server_name='0.0.0.0', server_port='9981', share=False, inbrowser=True, max_threads=1, debug=True, show_api=False)

2-构建您的第一个演示

app.py

import gradio as gr

def greet(name, intensity):

return "Hello, " + name + "!" * int(intensity)

demo = gr.Interface(

fn=greet,

inputs=["text", "slider"],

outputs=["text"],

)

demo.launch()

python app.py

3-自动重装加快开发速度

import gradio as gr

with gr.Blocks() as demo:

gr.Markdown("# Greetings from Gradio!")

inp = gr.Textbox(placeholder="What is your name?")

out = gr.Textbox()

inp.change(fn=lambda x: f"Welcome, {x}!",

inputs=inp,

outputs=out)

if name == "__main__":

demo.launch()

-如果文件发生变化,它会自动为您重新运行该文件

gradio run.py

-配置python脚本的编码声明

gradio run.py --encoding cp1252

-如果您的应用程序接受命令行参数,您也可以传入它们

import gradio as gr

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("--name", type=str, default="User")

args, unknown = parser.parse_known_args()

with gr.Blocks() as demo:

gr.Markdown(f"# Greetings {args.name}!")

inp = gr.Textbox()

out = gr.Textbox()

inp.change(fn=lambda x: x, inputs=inp, outputs=out)

if name == "__main__":

demo.launch()

gradio run.py --name Gretel

4-控制重装

您可以将不希望重新运行的代码放在if gr.NO_RELOAD:代码块。这里有一个例子,说明如何在开发过程中使用它只加载一次transformers模型

import gradio as gr

if gr.NO_RELOAD:

from transformers import pipeline

pipe = pipeline("text-classification", model="cardiffnlp/twitter-roberta-base-sentiment-latest")

demo = gr.Interface(lambda s: pipe(s), gr.Textbox(), gr.Label())

if name == "__main__":

demo.launch()

5-各个组件介绍

1. Gradio 提供了多种组件,用于创建交互式界面。

2. gr.Interface:用来构建可视化界面。

3. gr.Image:用于图像输入和输出。

4. gr.Textbox:用于文本框输入和输出。

5. gr.DataFrame:用于数据框输入和输出。

6. gr.Dropdown:用于下拉选项输入。

7. gr.Number:用于数字输入和输出。

8. gr.Markdown:用于Markdown输入和输出。

9. gr.Files:用于文件输入和输出。

10. cols :指定输入和输出组件的列数

11. rows :指定输入和输出组件的行数

12. inputs :指定输入组件的位置和大小

13. outputs :指定输出组件的位置和大小

14. gr.Button:用于创建按钮,可以绑定点击事件。

15. gr.Checkbox:用于创建我们的。

16. gr.Radio:用于创建单选按钮组。

17. gr.Slider:用于创建滑块。

18. gr.Audio:用于音频输入和输出。

19. gr.Video:用于视频输入和输出。

20. gr.ColorPicker:用于颜色选择。

21. gr.File:用于文件上传。

22. gr.Model3D:用于3D模型展示。

23. gr.Plot:用于制作图表。

24. gr.HTML:用于嵌入HTML内容。

25. gr.JSON:用于 JSON 数据的输入和输出

5.1-文本输入和输出

```

-文本输入 (Textbox)

import gradio as gr

def greet(name):

return f"Hello, {name}!"

demo = gr.Interface(fn=greet, inputs=gr.Textbox(lines=2, placeholder="Enter your name here..."), outputs="text")

demo.launch()

-文本输出 (Textbox)

import gradio as gr

def echo(text):

return text

demo = gr.Interface(fn=echo, inputs="text", outputs=gr.Textbox(label="Echoed Text"))

demo.launch()

```

5.2-图像输入和输出

-图像输入 (Image)

```

import gradio as gr

def process_image(image):

​ # 这里可以添加图像处理逻辑

​ return image

demo = gr.Interface(fn=process_image, inputs=gr.Image(type="pil"), outputs="image")

demo.launch()

```

-图像输出 (Image)

```

import gradio as gr

from PIL import Image

def generate_image():

img = Image.new("RGB", (100, 100), color="red")

return img

demo = gr.Interface(fn=generate_image, inputs=None, outputs=gr.Image(type="pil"))

demo.launch()

```

5.3-音频输入和输出

-音频输入 (Audio)

```

import gradio as gr

def process_audio(audio):

# 这里可以添加音频处理逻辑

return audio

demo = gr.Interface(fn=process_audio, inputs=gr.Audio(source="microphone"), outputs="audio")

demo.launch()

```

-音频输出 (Audio)

```

import gradio as gr

import numpy as np

def generate_audio():

sample_rate = 44100

t = np.linspace(0, 1, sample_rate, False)

audio = np.sin(440 2 np.pi * t)

return (sample_rate, audio)

demo = gr.Interface(fn=generate_audio, inputs=None, outputs=gr.Audio())

demo.launch()

```

5.4-视频输入和输出

-视频输入 (Video)

```

import gradio as gr

def process_video(video):

# 这里可以添加视频处理逻辑

return video

demo = gr.Interface(fn=process_video, inputs=gr.Video(), outputs="video")

demo.launch()

```

-视频输出 (Video)

```

import gradio as gr

def generate_video():

# 这里可以添加视频生成逻辑

return "path/to/video.mp4"

demo = gr.Interface(fn=generate_video, inputs=None, outputs=gr.Video())

demo.launch()

```

5.5-文件上传和下载

-文件上传 (File)

```

import gradio as gr

def process_file(file):

# 这里可以添加文件处理逻辑

return file.name

demo = gr.Interface(fn=process_file, inputs=gr.File(), outputs="text")

demo.launch()

```

-文件下载 (File)

```

import gradio as gr

def generate_file():

# 这里可以添加文件生成逻辑

return "path/to/file.txt"

demo = gr.Interface(fn=generate_file, inputs=None, outputs=gr.File())

demo.launch()

```

5.6--滑块 (Slider)

```

import gradio as gr

def slider_value(value):

return f"Slider value: {value}"

demo = gr.Interface(fn=slider_value, inputs=gr.Slider(minimum=0, maximum=100, step=1), outputs="text")

demo.launch()

```

5.7-单选按钮 (Radio)

```

import gradio as gr

def radio_choice(choice):

return f"You selected: {choice}"

demo = gr.Interface(fn=radio_choice, inputs=gr.Radio(["Option 1", "Option 2", "Option 3"]), outputs="text")

demo.launch()

```

5.8-复选框 (CheckboxGroup)

```

import gradio as gr

def checkbox_choices(choices):

return f"You selected: {', '.join(choices)}"

demo = gr.Interface(fn=checkbox_choices, inputs=gr.CheckboxGroup(["Option A", "Option B", "Option C"]), outputs="text")

demo.launch()

```

5.9-数据表格 (Dataframe)

```

import gradio as gr

import pandas as pd

def process_dataframe(df):

# 这里可以添加数据处理逻辑

return df

demo = gr.Interface(fn=process_dataframe, inputs=gr.Dataframe(headers=["Column 1", "Column 2"]), outputs="dataframe")

demo.launch()

```

6-按钮使用指南(事件处理和回调)

按钮回调:可以使用gr.Button创建按钮,并通过click方法绑定点击事件的回调函数。

输入组件事件:可访问输入组件(如gr.Textbox、gr.Slider等)事件,即change当输入值解析时触发回调函数。

自定义事件:可以定义自定义事件,并gr.Event绑定函数。

## 整个网页代码

import gradio as gr

# 定义一个处理函数,模拟对输入数据的处理

def process_data(text, radio, checkbox, slider, file, image, video, audio, dataframe):

# 这里只是简单地返回输入数据,实际应用中可以进行复杂的处理

return (

text,

radio,

checkbox,

slider,

file.name if file else "No file uploaded",

image,

video,

audio,

dataframe

)

7-创建 Gradio 界面

import gradio as gr

# 定义一个处理函数,模拟对输入数据的处理

def process_data(text, radio, checkbox, slider, file, image, video, audio, dataframe):

# 这里只是简单地返回输入数据,实际应用中可以进行复杂的处理

return (

text,

radio,

checkbox,

slider,

file.name if file else "No file uploaded",

image,

video,

audio,

dataframe

)

# 创建 Gradio 界面

with gr.Blocks() as demo:

gr.Markdown("# Gradio 组件示例")

with gr.Row():

text_input = gr.Textbox(label="文本输入")

radio_input = gr.Radio(["选项1", "选项2", "选项3"], label="单选按钮")

checkbox_input = gr.CheckboxGroup(["选项A", "选项B", "选项C"], label="复选框")

slider_input = gr.Slider(minimum=0, maximum=100, label="滑块")

with gr.Row():

file_input = gr.File(label="文件上传")

image_input = gr.Image(label="图像上传")

video_input = gr.Video(label="视频上传")

audio_input = gr.Audio(label="音频上传")

with gr.Row():

dataframe_input = gr.Dataframe(label="数据表格")

submit_button = gr.Button("提交")

with gr.Row():

text_output = gr.Textbox(label="文本输出")

radio_output = gr.Textbox(label="单选按钮输出")

checkbox_output = gr.Textbox(label="复选框输出")

slider_output = gr.Textbox(label="滑块输出")

file_output = gr.Textbox(label="文件输出")

image_output = gr.Image(label="图像输出")

video_output = gr.Video(label="视频输出")

audio_output = gr.Audio(label="音频输出")

dataframe_output = gr.Dataframe(label="数据表格输出")

# 定义按钮点击事件的回调函数

submit_button.click(

fn=process_data,

inputs=[text_input, radio_input, checkbox_input, slider_input, file_input, image_input, video_input,audio_input, dataframe_input],

outputs=[text_output, radio_output, checkbox_output, slider_output, file_output, image_output, video_output,audio_output, dataframe_output]

)

# 启动界面

demo.launch()

0

评论区