【问题标题】:GIF to AVI with windows Animate ControlGIF 到 AVI 与 windows Animate Control
【发布时间】:2012-02-05 23:10:07
【问题描述】:

我正在尝试转换 GIF 图像(Ajax 等类似):

转为将与 TAnimate 控件(win32 动画控件)一起使用的 AVI。

我尝试了一些工具,但问题是输出的 AVI 要么不适合动画控件,要么不透明。

注意事项:

  • 我不使用 Windows XP 主题清单 (D5)。 即使我的程序没有主题,Common Avi 也是透明的。
  • 不能使用 GIF 本身来显示动画。

你知道有什么工具可以帮助我进行这种转换吗?

编辑:

我已尝试将ImageMagicffmpeg 一起使用,如here 所述。但我似乎无法将ffmpeg 设置为编码为msrle

【问题讨论】:

  • 我很高兴我自己从TImageList 渲染每一帧而不依赖TAnimate(我经常使用Ajax 加载动画:) 转换软件的问题可能是因为TAnimate 不知道任何 DivX 或此类编解码器。
  • @TLama,对不起,但这不是我的选择:)
  • 我过去曾使用 Jasc Animation Shop,但 Corel 似乎不再提供它。
  • @Mark,我喜欢 Jasc Software 的旧东西;他们拥有真正用户友好的工具;)但回到问题上来;我对动画控件进行了更深入的研究,您似乎只需要创建一个 AVI 文件(未压缩或使用运行长度编码压缩),您希望在第一帧的左上角像素上透明的颜色 的视频剪辑。它记录在动画控制样式here
  • 在 Delphi 中,此样式表示为 TAnimate.Transparent,因此请将其设置为 True(您最有可能拥有的)并尝试渲染第一帧左上角像素的视频设置为您想要透明的颜色。无论如何,除了这个“解决方法”之外,动画控件不支持动画透明度。如果您说您已经能够渲染此控件支持的 AVI 文件但它不透明,那么就这样做;只需修改第一帧的图像;)

标签: delphi winapi avi graphic


【解决方案1】:

Jasc Animation Shop 能够直接读取动画 GIF 并写出压缩的 AVI。这是一个旧程序,Corel(收购了 Jasc)似乎不再提供,但您仍然可以找到例如免费试用版。

【讨论】:

    【解决方案2】:

    您可以尝试the TGIFImage component(为 Delphi 5 编写),它声称不仅支持动画 GIF,还支持透明度,以及将 GIF 转换为 AVI 的方法(和反之亦然)。

    它是否能做到这一切我不能说,因为我没有亲自测试过。就像上面 OP cmets 中提到的 TLama 一样,我使用自己的方式以动画方式播放每一帧(只有我的使用 RES 文件和 TImage,其中每一帧都存储为 PNG 以实现完全半透明的支持)。

    【讨论】:

    • 正如我所提到的,我不想使用 GIF 组件。而且我真的不想最终编写自己的工具来将 GIF 帧转换为 RLE 视频 :)
    • 我的意思是链接的 zip 包声称带有一个在 GIF 和 AVI 之间转换的工具。
    • 我加倍检查。没有这样的工具,或涉及转换为 AVI 的演示。
    • @kobik 很公平。我只是按照提供的描述进行。
    • 我居然在家里的电脑上找到了 Gif2Avi 演示项目! (作为 GifImage 组件演示文件的一部分,您也可以从 Torry.net 下载完整包)。它创建的 AVI 文件基本上是 MENT 以与作为项目的一部分的 TAnimate 控件一起使用,但正如@Warren P 建议的那样,它们不是透明的,并且其中一些是用损坏的帧生成的(它使用 VFW 生成 AVI文件)。
    【解决方案3】:

    许多商业工具都可以进行这种转换,包括 Corel Photo Paint 等。 Corel Photo Paint 提供免费试用版,它包含在 Corel Draw 包中。 (警告:它很大,而且很贵。)我认为 Corel Photo Paint 的转换不会比其他任何人更能解决透明度问题。

    在 Google 中输入一些单词,也表明来自 ProgDigy 的 DSPack 可能会对您有所帮助。

    上次我这样做时,我放弃了将 GIF 透明度转换为 AVI-with-transparency 的尝试,因为我找不到任何 AVI 编码工具可以保持透明度。因此,将其保留为 gif 并在您的应用中添加新控件(正如 LaKraven 建议的那样)的解决方案最终可能比与之抗争更好。

    【讨论】:

    • 我认为透明度与位图一样,基于左上角或左下角的颜色(通常是紫红色。我只是想知道 MS 如何在 shell32 中创建“AVI”资源.dll ...
    • 我相信你是对的,但由于这是“开发者/win32 约定”,大多数生产图形工具都不支持。
    【解决方案4】:

    我建议使用 GDIPlus 原生图像渲染器,它可以轻松处理动画 GIF 以及许多其他图像类型,包括多帧 TIFF(目前没有 MNG)。我能够找到一个为 TImage 实例设置动画的示例组件:

    http://www.progdigy.com/forums/viewtopic.php?p=13156

    请注意,我知道您正在寻找 AVI 透明度的解决方案,这只是向用户呈现“进度”的另一种方式,它似乎更轻量级(不依赖于 Windows 媒体播放设施)和灵活(这样的动画控制器可以在任何图像上使用)。

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 2011-08-30
      • 2010-11-19
      • 2014-05-10
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 2011-11-02
      相关资源
      最近更新 更多