Gradio入门学习笔记

一些比较好的参考文献

Gradio官网
如何使用 Gradio 创建聊天机器人

文件上传、分页下载功能

设想一个简单的功能,用户在界面上上传一个PDF文件,应用经过一系列的处理,把这个PDF的每一页都转成了png图片,并且打包压缩成一个压缩包,提供给用户下载。

这个功能可以很方便的使用gradio来实现。

python 复制代码
import gradio as gr
import fitz  # PyMuPDF
import os
import zipfile

def pdf_to_images(pdf_file):
    # 打开PDF文件
    doc = fitz.open(pdf_file)
    images = []

    for page_id in range(doc.page_count):
        page = doc[page_id]
        # 将页面转换为PNG图片
        pix = page.get_pixmap()
        img_bytes = pix.tobytes("png")
        images.append((img_bytes, f"{page_id+1}.png"))

    # 关闭PDF文档
    doc.close()

    # 创建一个临时目录来存储图片
    temp_dir = "temp_images"
    os.makedirs(temp_dir, exist_ok=True)

    # 保存图片到临时目录
    for img_bytes, img_name in images:
        with open(os.path.join(temp_dir, img_name), "wb") as f:
            f.write(img_bytes)

    # 创建压缩包
    zip_path = "images.zip"
    with zipfile.ZipFile(zip_path, "w") as zipf:
        for img_name in os.listdir(temp_dir):
            zipf.write(os.path.join(temp_dir, img_name), img_name)

    # 删除临时目录
    for img_name in os.listdir(temp_dir):
        os.remove(os.path.join(temp_dir, img_name))
    os.rmdir(temp_dir)

    return zip_path

def main():
    iface = gr.Interface(
        fn=pdf_to_images,
        inputs=gr.File(label="Upload PDF File"),
        outputs=gr.File(label="Download ZIP File"),
        title="PDF to Images Converter",
        description="Upload a PDF file and download a ZIP file containing all the pages as images."
    )
    iface.launch()

if __name__ == "__main__":
    main()


作者:大橙子打游戏
链接:https://juejin.cn/post/7382480523846467595
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关推荐
昵称画3 分钟前
POC验证怎么设计用例?不走过程的实操要点
大数据·数据库·人工智能·低代码·excel
江湖人称菠萝包7 分钟前
【Windows】《深入浅出Windows API程序设计:编程基础篇》笔记-Chapter1-基础知识
windows·笔记
TDengine (老段)18 分钟前
TDengine Catalog 与元数据缓存
大数据·数据库·物联网·缓存·时序数据库·tdengine
m4Rk_24 分钟前
【论文阅读】Agent 记忆机制(61):CFGM——用粗到细的记忆落地贯通经验采集、知识蒸馏与在线纠错
论文阅读·人工智能·学习·开源·github
边境悍匪28 分钟前
蜗牛学苑 Java 智能体学习 Day33|AOP 面向切面编程、日志技术思维导图复盘
学习
我是你的开心果77839 分钟前
ai全栈软件开发day21(第四阶段喽)
人工智能·学习
CarIise1 小时前
MySQL数据库表关系与多表查询:从表间关系设计到JOIN联表查询
数据库·mysql
江湖人称菠萝包1 小时前
【Windows】《深入浅出Windows API程序设计:编程基础篇》笔记-Chapter2-Windows窗口程序
windows·笔记
网络工程小王1 小时前
【LLM开发实验】FastAPI 学习笔记
数据库·笔记·学习·mysql·fastapi
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 14 章 打包与部署 制作 Docker 镜像 阅读笔记 43
spring boot·笔记·docker