Add a built-in “Download All” button to the gr.Gallery

用户在使用 Gradio 的 gr.Gallery 组件展示多张生成的图片或文件(例如批量生成 10+ 图片)时,必须手动点击每个文件单独下载,操作重复且耗时。此场景常见于 AI 绘画、图像批量处理后需要导出的 WebUI 应用。

Add a built-in "Download All" button to the gr.Gallery

Add a built-in “Download All” button to the gr.Gallery

快速结论:这是 Gradio 社区提出的功能请求,而非报错。用户在使用 gr.Gallery 展示批量生成图片或文件时,需要逐个点击下载,体验繁琐。开发者希望 Gradio 原生添加一个“Download All”按钮,支持一键打包下载。当前可优先通过自定义 Python 函数 + gr.Button 实现替代方案。

问题场景

用户在使用 Gradio 的 gr.Gallery 组件展示多张生成的图片或文件(例如批量生成 10+ 图片)时,必须手动点击每个文件单独下载,操作重复且耗时。此场景常见于 AI 绘画、图像批量处理后需要导出的 WebUI 应用。

报错原文

This is a feature request, not an error report. The core request: 
Add a built-in "Download All" button to the gr.Gallery component with a configurable boolean parameter (e.g., allow_download_all=True).

原因分析

Gradio 的 gr.Gallery 组件设计上缺少原生的一键批量下载功能。开发者只能通过创建自定义 Python 函数和独立的 gr.Button 来实现 zip 打包下载,逻辑分散且不够整洁。社区希望将下载功能直接集成到组件内部,提升用户体验。

环境排查

  • Gradio 版本:任意使用 gr.Gallery 组件的版本(建议升级到最新版以获取可能的新功能)。
  • Python 标准库:zipfile 模块(用于自定义替代方案)。
  • 前端框架:Svelte(Gradio 底层用于构建 UI,该功能需修改 Svelte 前端逻辑)。

解决步骤

  1. 等待官方实现:该功能已作为 Issue 提出,社区成员表示将开始添加 allow_download_all 参数并实现 zip 逻辑(见 Issue 评论)。可关注 Gradio 后续版本更新。
  2. 临时替代方案(功能已被确认实现前):
    a. 在 Python 后端编写自定义函数,接收画廊输出,使用 zipfile 库将图片打包为 .zip 文件。
    b. 在 Gradio 界面中单独添加一个 gr.Button,点击后调用该函数并返回 gr.File 对象供用户下载。
    c. 示例代码架构(源自 Issue 描述):

    def zip_gallery(images):
        import zipfile, io, os
        zip_buffer = io.BytesIO()
        with zipfile.ZipFile(zip_buffer, 'w') as zf:
            for i, img in enumerate(images):
                # 将图片写入 zip
                pass
        return zip_buffer
    
    with gr.Blocks() as demo:
        gallery = gr.Gallery()
        download_btn = gr.Button("Download All")
        download_btn.click(zip_gallery, gallery, gr.File())
  3. 贡献代码:如果你是开发者,可参考该 Issue 的实现方向,在 Gradio 仓库中为 gr.Gallery 添加 allow_download_all 参数,并修改 Svelte 前端以支持打包下载按钮。

验证方法

在 Gradio 应用中,使用 gr.Gallery(allow_download_all=True) 创建画廊组件,观察 UI 中是否出现原生的“Download All”按钮。点击后应自动打包当前所有图片为 .zip 文件并触发下载。对于自定义替代方案,点击单独的下载按钮后应成功下载包含所有 gallery 内容的 zip 包。

参考来源

gradio-app/gradio #13377

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 11453

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注