【问题标题】:Create usable images for each Frame of an Animated GIF image using PHP使用 PHP 为 GIF 动画图像的每一帧创建可用图像
【发布时间】:2016-11-11 05:37:22
【问题描述】:

目标

作为我正在构建的更大应用程序功能的一部分,我需要允许我的用户获取动画 GIF 图像并将每个帧提取到它自己的图像中以向用户展示。

然后,用户可以选择任何帧图像,然后将其保存并用作我的 动画 GIF 播放器上的非动画封面图像,通过加载封面图像,它的功能类似于电影在页面加载时,仅在用户单击封面图像上的播放按钮后下载和显示大文件动画 GIF 图像。

我的目标是使用 PHP 来做到这一点,因为我的应用程序将作为 WordPress 插件发布,所以如果我需要一些花哨的服务器端软件,那么它可能会限制我的用户群。

到目前为止,该任务的最佳 PHP 搜索结果已经找到了这个名为 GifFrameExtractor 的库,它是一个单文件 PHP 类。我在此分叉副本中找到了更高级/更新的版本https://github.com/AbhasKr/GifFrameExtractor

图书馆有 1 个选项。是否生成透明框架。我在下面做了一个演示,它采用我的示例动画 GIF 图像并使用两个版本(透明和不透明)将每个帧提取到自己的图像文件中。


问题

使用 GifFrameExtractor 库生成的两组图像都不符合我的质量需求。

然后我找到了一个在线云图像处理服务,我将示例 GIF 图像上传到它,它可以生成我需要的完美 Frame 图像!

服务是http://cloudinary.com/

我可以使用这种 URL 格式查看我在此处上传的动画 GIF 文件的每一帧

http://res.cloudinary.com/apollo-web-studio/image/upload/pg_[FRAME_NUMBER_HERE]/Ladda-loader-buttons_qlpxbc.jpg

[FRAME_NUMBER_HERE] 部分替换为帧号,它会将帧显示为图像。


演示

演示和代码网址

演示 http://apollowebstudio.com/labs/gif_gen/demo.php

GitHub GIST 演示源代码: https://gist.github.com/jasondavis/ab7c71fc1a007c3a31282bb9791cecff

使用了分叉的 GifFrameExtractor PHP 库: https://github.com/AbhasKr/GifFrameExtractor

源测试GIF动画图片:http://localhost/labs/php/GifFrameExtractor/Ladda-loader-buttons.gif

演示展示了我尝试获取动画 GIF 图像并使用 PHP 将每个帧提取为可用图像的 3 种不同处理结果

第 1 列和第 2 列
使用PHP库GIFFrameExtractor,结果都不是很完美。

第 3 栏
我使用了一个名为 cloudinary.com 的在线图像处理云服务

在 Cloudinary.com 上生成的图像使用了一些不同的技术,因为生成的每一帧都完美无瑕!

我的目标是为每一帧生成图像,并让它们像使用 PHP 的 Cloudinary.com 的结果一样。请问我需要帮助吗?

http://apollowebstudio.com/labs/gif_gen/demo.php

【问题讨论】:

    标签: php image gif animated-gif


    【解决方案1】:

    您可能想查看 ImageMagick(它提供了一个 PHP 库),特别是“合并”功能,它从 GIF 动画的每一帧中生成全帧图像(而不是仅指示更改的部分帧内容从上一帧)。

    这可用于生成动画 GIF 的“电影片段”,或者在您的情况下为动画 GIF 的每一帧提取单独的完整图像。

    链接:http://www.imagemagick.org/Usage/anim_basics/#coalesce

    【讨论】:

    猜你喜欢
    • 2020-07-25
    • 2011-04-10
    • 2015-04-06
    • 2017-06-13
    • 2019-10-20
    • 2020-08-30
    • 2011-01-12
    • 2013-12-29
    • 2015-06-16
    相关资源
    最近更新 更多