【C#】GIF软件-可逐帧查看GIF中的图片和图片压缩功能
本帖最后由 简单单单 于 2019-5-14 16:45 编辑软件主要功能:
一:两种代码压缩功能
二:逐帧查看GIF中的图片
三:自定义倍速播放GIF(添加倒放功能)
2019.05.14 修复部分BUG 并添加倒放功能
软件编译大小23kb,VS2015编译,WinGifTool\bin\Debug下WinGifTool.exe可直接运行使用
拖入图片即可显示图片总帧数
软件窗体可放大,如果gif大小显示不全,放大程序窗体再点击预览或者播放即可
代码其实没什么,参考网上资料,做这个软件主要是很小巧的实现看GIF某些帧的图片,不用打开PS才能看
压缩功能可能有噪点
/// <summary>
/// 获取指定帧数的图片
/// </summary>
/// <param name="path"></param>
/// <param name="index"></param>
/// <returns></returns>
private Image GetImg(string path, int index)
{
Image res = Image.FromFile(path);
int width = res.Width;
int height = res.Height;
Image gif = new Bitmap(width, height);
Image frame = new Bitmap(width, height);
Graphics g = Graphics.FromImage(gif);
Rectangle rg = new Rectangle(0, 0, width, height);
Graphics gFrame = Graphics.FromImage(frame);
int forIndex = 0;
foreach (Guid gd in res.FrameDimensionsList)
{
FrameDimension fd = new FrameDimension(gd);
//因为是缩小GIF文件所以这里要设置为Time,如果是TIFF这里要设置为PAGE,因为GIF以时间分割,TIFF为页分割
FrameDimension f = FrameDimension.Time;
int count = res.GetFrameCount(fd);
//ImageCodecInfo codecInfo = GetEncoder(ImageFormat.Gif);
//System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.SaveFlag;
//EncoderParameters eps = null;
for (int i = 0; i < count; i++)
{
res.SelectActiveFrame(f, i);
if (0 == i)
{
if (forIndex == index)
{
g.DrawImage(res, rg);
bindProperty(res, gif);
return gif;
}
//gif.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"/" + Path.GetFileName(path).Replace(".", DateTime.Now.ToString("yyMMddHHmmssfff") + "."), codecInfo, eps);
}
else
{
if (forIndex == index)
{
gFrame.DrawImage(res, rg);
bindProperty(res, frame);
return frame;
}
//gif.SaveAdd(frame, eps);
}
forIndex++;
}
//eps = new EncoderParameters(1);
//eps.Param = new EncoderParameter(encoder, (long)EncoderValue.Flush);
//gif.SaveAdd(eps);
}
//MessageBox.Show("缩放完成!");
res.Dispose();
return null;
}
蓝奏云无密码
https://www.lanzouj.com/i45l3zi
没有编译环境的同学WinGifTool\bin\Debug下WinGifTool.exe可直接运行使用
简单单单 发表于 2019-10-27 15:16
如果是Gifsicle压缩我另一个帖子应该已经实现了
https://www.52pojie.cn/thread-955905-1-1.html
你先 ...
但是好像没有和ezgif网上一样的...
自定义调画质...
只有自动压缩...
还有不知能否做到按照自定义设置大小lossygif算法压制... 990721830 发表于 2019-10-2 04:13
https://ezgif.com/optimize
能加入这个里面的优化算法吗?
或者可以用右键文件发送到这个页面...
如果是Gifsicle压缩我另一个帖子应该已经实现了
https://www.52pojie.cn/thread-955905-1-1.html
你先看下 貌似还不错,收藏了,备用,谢谢 感谢分享,支持原创! 这东东不错,之前帮人P过gif,需要这样的好工具 可以用到 骨质乌过木 发表于 2019-5-7 11:57
有成品吗楼主@简单单单
你把附件下载下,这个路径看能直接运行不
WinGifTool\bin\Debug\WinGifTool.exe
不行的话我再补连接 没用过。支持楼主一下。 感谢分享这么好的工具 收藏,感谢。