首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python :返回的gif图像没有动画

Python :返回的gif图像没有动画
EN

Stack Overflow用户
提问于 2021-05-17 14:16:52
回答 2查看 276关注 0票数 1

下面是我的Python和Html代码:-

Python:

代码语言:javascript
复制
@app.get('/', status_code=200)
async def upload_file(file: UploadFile = File(...)):
     error_img = Image.open('templates/crying.gif')
     byte_io = BytesIO()
     error_img.save(byte_io, 'png')
     byte_io.seek(0)
     return StreamingResponse(byte_io, media_type='image/gif')

HTML:

代码语言:javascript
复制
<img src="" id="img-maze" alt="this is photo" style="display: none;" />

function goBuster(file) {

    fetch('/', {
        method: 'GET',
        body: data
    })
        .then(response => response.blob())
        .then(image => {
            var outside = URL.createObjectURL(image);
            var mazeimg = document.getElementById("img-maze");
            mazeimg.onload = () => {
                URL.revokeObjectURL(mazeimg.src);
            }
            mazeimg.setAttribute('src', outside);
            mazeimg.setAttribute('style', 'display:inline-block');

        })
}

图像没有动画,我检查了生成的html并发现:

代码语言:javascript
复制
<img src="blob:http://127.0.0.1:8000/ee2bda53-92ac-466f-afa5-e6e34fa3d341" id="img-maze" alt="this is  photo" style="display:inline-block">

所以img正在使用blob,我想这就是为什么gif没有动画的原因,但我不知道如何修复它。

更新1

现在,我已经更新了我的代码:

代码语言:javascript
复制
      with open('templates/crying.gif', 'rb') as f:
        img_raw = f.read()
        byte_io = BytesIO()
        byte_io.write(img_raw)
        byte_io.seek(0)
        return StreamingResponse(byte_io, media_type='image/gif')

生成的HTML看起来相同:

代码语言:javascript
复制
<img src="blob:http://127.0.0.1:8000/c3ad0683-3971-4444-bf20-2c9cd5eedc3d" id="img-maze" alt="this is maze photo" style="display:inline-block">

但更糟的是,这张照片甚至没有出现。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-21 22:34:44

(代表问题作者发布解决方案,以便将其张贴在回答空间)。

我通过以下方式解决了这个问题:

使用@VadSim提供的代码的rb

  • wb更改为

注意:如果您运行该程序,然后将wb更改为rb,代码会将原始gif映像销毁为0字节图像。这就是它一开始不起作用的原因。

现在,我让gif在html中工作:)

票数 0
EN

Stack Overflow用户

发布于 2021-05-17 14:34:00

代码语言:javascript
复制
error_img.save(byte_io, 'png')

你要把这个图像转换成png。PNG不支持动画。

我想你可以用:

代码语言:javascript
复制
@app.get('/', status_code=200)
async def upload_file(file: UploadFile = File(...)):
     with open('templates/crying.gif', 'rb') as f:
         img_raw = f.read()
     byte_io = BytesIO(img_raw)
     return StreamingResponse(byte_io, media_type='image/gif')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67571477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档