Asp.net core API返回的GIF未设置动画

Asp.net core API返回的GIF未设置动画,asp.net-core,asp.net-core-mvc,.net-core,Asp.net Core,Asp.net Core Mvc,.net Core,我试图通过我的ASP.NET核心API返回动画GIF,但只有一些返回的GIF实际动画。那些不起作用的只显示第一帧而不显示动画,起作用的像正常的GIF一样播放。我不明白为什么有些工作,有些不工作。返回的所有内容都带有内容类型:image/gif,并且内容长度设置正确。我的代码如下。我做错了什么 一些示例图像: 不起作用 不起作用 确实有效 确实有效 (为了记录在案,这只是一个小的附带项目,目的是获得更多MVC核心的经验。我不想绕过imgur的广告。) Chrome会在控制台中对所有图像执行

我试图通过我的ASP.NET核心API返回动画GIF,但只有一些返回的GIF实际动画。那些不起作用的只显示第一帧而不显示动画,起作用的像正常的GIF一样播放。我不明白为什么有些工作,有些不工作。返回的所有内容都带有
内容类型:image/gif
,并且
内容长度设置正确。我的代码如下。我做错了什么


一些示例图像:

  • 不起作用
  • 不起作用
  • 确实有效
  • 确实有效
(为了记录在案,这只是一个小的附带项目,目的是获得更多MVC核心的经验。我不想绕过imgur的广告。)


Chrome会在控制台中对所有图像执行此操作,无论它们是否设置动画

Resource interpreted as Document but transferred with MIME type image/gif: "localhost:22222/filename.gif".

我的代码:

var img=await\u client.GetStreamAsync(“http://my.url");
//获取正确的内容长度所必需的
var contents=newmemoryStream();
等待img.CopyToAsync(内容);
Response.ContentLength=contents.Length;
contents.Seek(0,SeekOrigin.Begin);
返回文件(内容为“image/gif”);

问题在于imgur。它提供不同版本的.gif文件,具体取决于所请求的内容,也可能取决于用户代理或参考者或请求的其他部分。他们同样会将GIF重定向到他们的.giff播放器/兼容性页面,以避免提供大文件。如果您查看实际提供的内容,您应该会看到,它要么为所述页面提供HTML,要么提供GIF的非动画缩略图版本。(您可以通过在URL中的图像ID末尾添加一个“h”来手动查看该版本-例如:)

这两个不工作有两个共同点:它们是通过imgur的vidgif工具创建的,它们的大小都超过30MB。另外两个都是以.gif文件的形式上传的,不超过15MB。无论差异或imgur的逻辑是什么,它都会导致HTML播放器页面出现错误,或者imgur只提供vidgif的缩略图版本

在请求中使用普通浏览器用户代理可能会更改此行为


如果这很重要的话,您最好使用.mp4版本。不会每个GIF都有一个,因为您的第三个示例非常小,所以不会有一个。您可以返回到.gif(或.jpg)对于这些情况。

看起来就像是
http://my.url
返回的是一个文档而不是gif。@Dealdiane:我也这么想,但OP提到了一些工作和一些问题dont@vaindil:你能把两个gif链接起来吗?@garfbradaz我在帖子中添加了一些示例图片,抱歉耽搁了。太好了,正是我需要的。我切换到mp4版本的大部分(带有gif回退),事情进展顺利。非常感谢。