在编写PDF转图片的代码时遇到问题

在编写PDF转图片的代码时遇到问题
我的需求是:上传一份文件。然后有一个判断,如果是图片则做一系列处理然后给AI能力,如果是PDF则先转化成图片再做以上步骤。
现在的问题是,我在网上搜索的教程都是只能转化本地保存的PDF,这种传输过来的要怎么处理呢?

AI支持什么格式的图片数据?支持2进制数据可以用pypdfium2将pdf每页内容处理成2进制数据后传递给AI。

from flask import Flask, request,render_template
import pypdfium2 as pdfium
import io


app = Flask(__name__)

@app.route("/upload", methods=["POST"])
def save_file():
    file = request.files['file']
    bindata=file.read()#文件2进制数据
    suffix=file.filename.lower().split('.')[-1]
    returnValue=""##图片识别后返回给客户端的内容
    if suffix=="pdf":#pdf文件处理
        pdf=pdfium.PdfDocument(bindata)
        n_pages=len(pdf)#页数
        for i in range(n_pages):
            page=pdf[i]
            bitmap=page.render(scale = 300/72)#300dpi,更大尺寸改这里
            pil_image = bitmap.to_pil()#PIL.Image.Image
            output = io.BytesIO()
            pil_image.save(output, format='JPEG')

            bindata=output.getvalue()##图片2进制
            #将2进制传递给AI处理后赋值给returnValue

    elif suffix in['jpg','jpeg','gif','png']:
        #将2进制传递给AI处理后赋值给returnValue
        pass##图片处理


    return returnValue#返回给客户端

@app.route("/", methods=["GET"])
def index():
    return render_template("index.html")

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000, debug=True)

参考一下

from flask import Flask, request, render_template
from pdf2image import convert_from_bytes

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        # 将上传的PDF文件转换为PIL Image对象
        pages = convert_from_bytes(file.read())
        # 保存每一页为图片文件
        for i, page in enumerate(pages):
            page.save(f'page_{i}.jpg')
        return '文件上传成功!'
    return render_template('upload.html')

if __name__ == '__main__':
    app.run()


您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632