使用PHP为动画GIF图像的每一帧创建可用图像 目标

使用PHP为动画GIF图像的每一帧创建可用图像 目标,php,image,gif,animated-gif,Php,Image,Gif,Animated Gif,作为我正在构建的更大应用程序功能的一部分,我需要允许我的用户拍摄动画GIF图像,并将每个帧提取到自己的图像中,以向用户显示 然后,用户可以选择任何帧图像,这些帧图像将被保存并用作my动画GIF播放器上的非动画封面图像,该播放器的功能类似于电影,方法是在页面加载时加载封面图像,并且仅在用户单击屏幕上的播放按钮后下载并显示大文件动画GIF图像封面图片 我的目标是用PHP实现这一点,因为我的应用程序将作为WordPress插件发布,所以如果我需要一些奇特的服务器端软件,它可能会限制我的用户群 到目前为

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

然后,用户可以选择任何帧图像,这些帧图像将被保存并用作my动画GIF播放器上的非动画封面图像,该播放器的功能类似于电影,方法是在页面加载时加载封面图像,并且仅在用户单击屏幕上的播放按钮后下载并显示大文件动画GIF图像封面图片

我的目标是用PHP实现这一点,因为我的应用程序将作为WordPress插件发布,所以如果我需要一些奇特的服务器端软件,它可能会限制我的用户群

到目前为止,此任务的最佳PHP搜索结果已经找到了名为GifFrameExtractor的库,它是一个单文件PHP类。我在这里找到了一个更高级/更新的版本

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


问题 使用GifFrameExtractor库生成的两组图像都不能满足我的质量要求

然后我找到了一个在线云图像处理服务,我上传了示例GIF图像到其中,它生成了我所需要的完美帧图像

服务是

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

http://res.cloudinary.com/apollo-web-studio/image/upload/pg_[FRAME_NUMBER_HERE]/Ladda-loader-buttons_qlpxbc.jpg
[FRAME\u NUMBER\u HERE]部分替换为帧编号,它将以图像的形式显示帧


演示 演示和代码URL 演示

GitHub GIST演示源代码:

使用的分叉框架提取器PHP库:

源代码测试动画GIF图像:

演示显示了我尝试拍摄一幅动画GIF图像并使用PHP将每一帧提取为可用图像的3种不同处理结果

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

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

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

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



您可能想看看ImageMagick(它提供了一个PHP库),特别是“coalesce”功能,它从GIF动画的每一帧生成一个完整的帧图像(而不是仅部分帧内容指示与前一帧的更改)

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


链接此处:

补充塞布·巴雷的话。看到和