2017-09-27 86 views
3

在我的应用程序中,有一个图像上传,如果用户想上传gif图像。我需要禁用图像中的循环并保存,结果用户的GIF图像必须播放一次,然后停止。也许我需要删除GIF图像的最后一帧的指针?有任何想法吗?如何禁用循环gif图像并将其保存在c#

+0

*“我需要禁用图像中的循环并保存它”* - 表示您想要保存某个帧? – Sinatr

+0

@Sinatr不,gif图像它是另一个网站的广告横幅的一部分,并且来自这个网站的一个要求是没有无限循环的gif。 –

+0

@Sinatr你的意思是说,他应该保存一个框架作为另一个图像,并在循环完成后将其替换到客户端上? – ASpirin

回答

0

我找到了答案,谢谢所有试图帮助我的人。

如果您知道每个属性的字节的具体地址,则可以获得gif图像的一组属性。 例如,20737是循环属性。 如果将此属性设置为0,gif图像将具有无限循环,但如果将此属性设置为大于0,gif图像将无限重复。我放在这里的example

var image = System.Drawing.Image.FromFile(path) 
var IsLooped = BitConverter.ToInt16(image.GetPropertyItem(20737).Value, 0) != 1; 
+0

你也应该知道这一点: - https://bugzilla.mozilla.org/show_bug.cgi?id=1255497#c4 – saurabheights

+0

这是正确的,不是吗? “NETSCAPE2.0”中的值0意味着循环永远。 缺少“NETSCAPE2.0”块意味着0次重复=循环一次。 “NETSCAPE2.0”中的值1表示1次重复= 2次循环。 “NETSCAPE2.0”中的值2表示2次重复= 3次循环。 –

+0

嗨帕维尔,刚刚检查了一张图片。正如评论中提到的那样。运行:'gifsicle --no-loopcount < input.gif > output.gif',它将删除Netscape扩展块,并且图像不会在Chrome和Firefox中循环。使用'xxd output.gif |确认grep NETSCAPE'和Netscape扩展块被删除。在Ubuntu上完成。希望能帮助到你。 Gifsicle参考 - https://www.lcdf.org/gifsicle/man.html – saurabheights

相关问题