在现代应用中,用户经常需要上传多张图片进行处理或分析。Gradio 是一个非常方便的 Python 库,可以快速构建交互式的 Web 界面,方便用户上传图片、输入文本等。本篇博客将介绍如何使用 Gradio 实现多张图片的上传,并在服务器端处理这些图片,输出每张图片的名称和尺寸,以验证服务器已经成功接收了这些图片。
确保你已经安装了以下必要的库:
你可以使用以下命令安装这些库:
bash展开代码pip install gradio Pillow
以下是实现多张图片上传并显示其名称和尺寸的完整代码:
python展开代码import gradio as gr
from PIL import Image
def get_image_info(images):
    if not images:
        return "未上传任何图片。"
    
    result = ""
    for img in images:
        if isinstance(img, tuple):
            img = img[0]
        if isinstance(img, Image.Image):
            width, height = img.size
            name = img.filename if hasattr(img, 'filename') else "未知名称"
            result += f"{name}: {width}x{height} 像素\n"
    return result
def upload_file(files, current_files):
    file_paths = current_files + [file.name for file in files]
    return file_paths
def clear_images():
    return []
with gr.Blocks() as demo:
    with gr.Tab("图片上传与信息展示"):
        with gr.Row():
            with gr.Column():
                image_gallery = gr.Gallery(type='pil', label='图片列表 (Photos)', height=250, columns=4, visible=True)
                upload_button = gr.UploadButton("选择图片上传 (Upload Photos)", file_types=["image"], file_count="multiple")
                clear_button = gr.Button("清空图片 (Clear Photos)")
                analyze_button = gr.Button("显示图片信息 (Show Image Info)")
            with gr.Column():
                analysis_output = gr.Textbox(label="图片信息 (Image Info)", lines=10)
        
        user_images = gr.State([])
        
        upload_button.upload(upload_file, inputs=[upload_button, user_images], outputs=image_gallery)
        clear_button.click(fn=clear_images, inputs=None, outputs=image_gallery)
        analyze_button.click(get_image_info, inputs=image_gallery, outputs=analysis_output)
    
    with gr.Tab("其他功能"):
        gr.Markdown("在这里可以添加其他功能的内容。")
demo.launch(server_name="0.0.0.0", server_port=7891)
运行代码
将上述代码保存为 app.py,在终端中运行:
bash展开代码python app.py
访问应用
运行后,终端会显示类似如下的信息:
展开代码Running on local URL: http://127.0.0.1:7891/
如果你在局域网内其他设备上访问,需要使用服务器的IP地址,例如 http://192.168.1.100:7891/。
测试功能

本文介绍了如何使用 Gradio 实现多张图片的上传,并在服务器端处理这些图片,输出每张图片的名称和尺寸。通过这种方式,可以轻松验证服务器是否成功接收了上传的图片,并为后续的图片处理任务奠定基础。Gradio 的简洁 API 和强大的功能使得快速构建交互式应用变得非常简单,非常适合用于快速原型开发和展示。
希望这篇博客对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言讨论。


本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!