在我的应用程序中,有一个图像上传,如果用户想上传gif图像。我需要禁用图像中的循环并保存,结果用户的GIF图像必须播放一次,然后停止。也许我需要删除GIF图像的最后一帧的指针?有任何想法吗?如何禁用循环gif图像并将其保存在c#
回答
您需要添加或更改Netscape Application扩展块。在此块中有2个字节来控制循环,请参见下面的回答详情:
https://stackoverflow.com/a/28486261/3936440
我无法找到GIF操纵一个适当的包装,但我认为你可以使用BumpKit作为灵感的源泉,这里提到
https://stackoverflow.com/a/32810041/3936440
或
https://github.com/DataDink/Bumpkit/blob/master/BumpKit/BumpKit/GifEncoder.cs
我找到了答案,谢谢所有试图帮助我的人。
如果您知道每个属性的字节的具体地址,则可以获得gif图像的一组属性。 例如,20737是循环属性。 如果将此属性设置为0,gif图像将具有无限循环,但如果将此属性设置为大于0,gif图像将无限重复。我放在这里的example。
var image = System.Drawing.Image.FromFile(path)
var IsLooped = BitConverter.ToInt16(image.GetPropertyItem(20737).Value, 0) != 1;
你也应该知道这一点: - https://bugzilla.mozilla.org/show_bug.cgi?id=1255497#c4 – saurabheights
这是正确的,不是吗? “NETSCAPE2.0”中的值0意味着循环永远。 缺少“NETSCAPE2.0”块意味着0次重复=循环一次。 “NETSCAPE2.0”中的值1表示1次重复= 2次循环。 “NETSCAPE2.0”中的值2表示2次重复= 3次循环。 –
嗨帕维尔,刚刚检查了一张图片。正如评论中提到的那样。运行:'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
- 1. 在循环中绘制R图,并将其保存为jpeg
- 2. WPF,C#,油墨画布,图像 - 如何在现有图像上保存inkcanvas并将其保存为新图像?
- 3. 如何在保存时禁用保存图像并将后缀更改为.htm?
- 4. Backbone.js - 当我循环并保存模型时,如何显示保存gif?
- 5. AS3 - 将图像保存为静态GIF
- 6. 裁切图像,并将其保存
- 7. 如何下载图像并将其保存在Android中
- 8. 如何旋转图像并将其保存在JSP/Servlet页面
- 9. 如何捕获图像,并将其保存在SD卡
- 10. 在循环内保存图像
- 11. 在一个循环中保存图像
- 12. 图像无法保存在Parallel.For循环
- 13. 如何在叠加其他图像后合并/保存图像?
- 14. 如何将图像插入背景并将其保存为JAVA?
- 15. 旋转GIF图像并保存GIF动画
- 16. 使用for循环将图像保存在文件夹中
- 17. 在C#中使用图像。调整一个GIF并保存为JPEG
- 18. 如何将捕获的图像转换为GIF并保存到SD卡中android
- 19. 如何创建与蟒蛇循环字符串,并将其保存在文件
- 20. 如何将图形转换为位图并将其保存在c#中?
- 21. 如何将循环JSON对象字符串化并将其保存到文件?
- 22. 捕获图像并将其保存在内部存储器上
- 23. 我如何获得图像像素并将其保存在int数组中?
- 24. 如何通过图像绘制图像并将其保存为android系统
- 25. 如何使用Retrofit2上传图像并将其保存在NodeJS服务器上?
- 26. 如何绘制循环中的一组子绘图并将每个子绘图保存在外循环中?
- 27. 使用c下载并保存图像#
- 28. 如何将图像保存在WPF应用程序在C#
- 29. 结合并保存图像在c + +
- 30. 如何将图像保存到localStorage并将其显示在下一页上?
*“我需要禁用图像中的循环并保存它”* - 表示您想要保存某个帧? – Sinatr
@Sinatr不,gif图像它是另一个网站的广告横幅的一部分,并且来自这个网站的一个要求是没有无限循环的gif。 –
@Sinatr你的意思是说,他应该保存一个框架作为另一个图像,并在循环完成后将其替换到客户端上? – ASpirin