【发布时间】:2016-11-11 05:37:22
【问题描述】:
目标
作为我正在构建的更大应用程序功能的一部分,我需要允许我的用户获取动画 GIF 图像并将每个帧提取到它自己的图像中以向用户展示。
然后,用户可以选择任何帧图像,然后将其保存并用作我的 动画 GIF 播放器上的非动画封面图像,通过加载封面图像,它的功能类似于电影在页面加载时,仅在用户单击封面图像上的播放按钮后下载和显示大文件动画 GIF 图像。
我的目标是使用 PHP 来做到这一点,因为我的应用程序将作为 WordPress 插件发布,所以如果我需要一些花哨的服务器端软件,那么它可能会限制我的用户群。
到目前为止,该任务的最佳 PHP 搜索结果已经找到了这个名为 GifFrameExtractor 的库,它是一个单文件 PHP 类。我在此分叉副本中找到了更高级/更新的版本https://github.com/AbhasKr/GifFrameExtractor
图书馆有 1 个选项。是否生成透明框架。我在下面做了一个演示,它采用我的示例动画 GIF 图像并使用两个版本(透明和不透明)将每个帧提取到自己的图像文件中。
问题
使用 GifFrameExtractor 库生成的两组图像都不符合我的质量需求。
然后我找到了一个在线云图像处理服务,我将示例 GIF 图像上传到它,它可以生成我需要的完美 Frame 图像!
我可以使用这种 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 的结果一样。请问我需要帮助吗?
【问题讨论】:
标签: php image gif animated-gif