目标
作为一个更大的应用程序的功能,我正在建设我需要允许我的用户采取一个动画GIF图像和提取到它自己的图像每个帧显示给用户。
然后,用户可以选择任何帧图像,这些帧图像随后将被保存并用作我的Animated GIF Player上的非动画封面图像,其功能类似于电影,即在页面加载时加载封面图像,并且仅在用户单击封面图像上的"播放"按钮后才下载和显示大文件"动画GIF图像"。
我的目标是用PHP来实现这一点,因为我的应用程序将作为WordPress插件发布,所以如果我需要一些花哨的服务器端软件,那么它可能会限制我的用户群。
到目前为止,这个任务的最佳PHP搜索结果是这个名为GifFrameExtractor的库,它是一个单一文件PHP类。我在这里的分叉副本https://github.com/AbhasKr/GifFrameExtractor中找到了一个更高级/更新的版本
该库有1个选项。生成透明帧或不。我做了一个演示下面采取我的样本动画GIF图像和提取到自己的图像文件中使用两个版本(透明和不)的每一帧。
问题
用GifFrameExtractor库生成的2组图像都不符合我的质量需求。
然后,我找到了一个在线云图像处理服务,我上传了样本gif图像,它生成完美的帧图像像我需要的!
该服务是http://cloudinary.com/
我可以查看我的动画GIF文件的每一帧,我上传到这里使用这种格式的URL
http://res.cloudinary.com/apollo-web-studio/image/upload/pg_[FRAME_NUMBER_HERE]/Ladda-loader-buttons_qlpxbc.jpg
将**[FRAME_NUMBER_HERE]**部分替换为帧编号,帧将显示为图像。
演示
演示和代码URL
- 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
这个演示展示了3种不同的处理结果,我尝试了一个动画GIF图像,并使用PHP将每个帧提取到一个可用的图像中
- 第1列和第2列**
使用PHP库GIFFrameExtractor其中的结果都不完美。
- 第三栏**
I used an online image processing cloud service called cloudinary.com
The images generated on Cloudinary.com use some different technique as each frame generated is flawless!
My goal is to generate images for each frame and have them turn out like the results from Cloudinary.com using PHP.
http://apollowebstudio.com/labs/gif_gen/demo.php
1条答案
按热度按时间t8e9dugd1#
您可能需要查看ImageMagick(它提供了一个PHP库),特别是“合并”功能,该功能从GIF动画的每一帧中生成一个完整的帧图像(而不是仅显示部分帧内容,指示与前一帧相比的更改)。
这可用于生成动画GIF的“幻灯片”,或者在您的情况下为动画GIF的每一帧提取单独的完整图像。
此处链接:http://www.imagemagick.org/Usage/anim_basics/#coalesce