- (NSTimeInterval)durationForGifData:(NSData *)data{
CGImageSourceRef gifSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
size_t frameCout = CGImageSourceGetCount(gifSource);
NSMutableArray* frames = [[NSMutableArray alloc] init];
NSTimeInterval totalDuration = 0;
for (size_t i=0; i<frameCout; i++) {
//获取gif图片的总时长和循环次数- (NSTimeInterval)durationForGifData:(NSData *)data{ //将GIF图片转换成对应的图片源 CGImageSourceRef gifSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); //获取其中图
1.Gif单循环播放,播放结束后停在最后一帧动画图,同时监听结束事件。
2.Gif播放一半,弹出自定义动画,循环播放Gif任意区间帧动画。
3.tableView的headerView的伸缩变化。
下载地址:https://github.com/FighterLightning/GifImageAndImageChange.git
感觉有帮助,请不要吝啬你的小星星,谢谢
在iOS14之后,使用imageIo 内的CGImageDestinationAddImage合成的gif在YYAnimatedImageView上只播放了一次就停止了,没有无限循环播放。
在网上查了很多,gif的播放次数与内部kCGImagePropertyGIFLoopCount这个参数有关。我自己生成的gif,转成NSData后,去获取loopcount不为0,这里的gifProperty有时候为nil最后也打印为0。
-(void)prepareGif:(NSData*)data {
1. 根据gif的格式来自己解析出图片,或者使用ImageMagick这个库来做
2. 使用sdk当中自带的ImageIO来做,但是需要iOS系统版本4.0以上(这个基本上木有问题了,因为现在xcode默认是4.3以上了)
这里使用了ImageIO来做,基本上
-(void)loadGIFWithWebView
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 350*2, 393)];
[webView setCenter:...
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680
GIF的应用场景
GIF在iOS中的使用场景有以下三个方面。
(1)GIF图片分解为单帧图片。
(2)一系列单帧图片合成GIF图片。
(3)iOS系统上展示GIF动画效果。
在GIF的合成和分解方面将会接触到iOS图像处理核心框架ImageIO,作...
转:http://blog.csdn.net/marujunyy/article/details/14455699
最近由于项目需要,需要先把
gif图拆解开,然后在每一张
图片上添加一些
图片和文字,最后再合成
gif文件;写了一个工具类可以每一帧画面并遵循每一帧所对应的显示时间进行播放,并且可以用多张
图片指定每一帧播放时间来合成
gif图。下面是使用方法和工具类:(需要添加framework
众所周知,iOS默认是不支持gif类型图片的显示的,但是我们项目中常常是需要显示gif为动态图片。那肿么办?第三方库?是的 ,很多第三方都支持gif , 如果一直只停留在用第三方上,技术难有提高。上版本的 Kingfisher 也支持gif ,研究了一番,也在网上搜索了一番,稍微了解了下iOS实现gif的显示,在此略做记录。
本篇文章要实现的效果如图:
可以开始和暂停gif的播放,滑动时...
1、使用UIWebView// 读取gif图片数据 注意:传入nil参数可能有警告
NSData *data = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"001" ofType:@"gif"]];
UIWebView *webView = [[UIWebView allo
这个extension代码不多,主要通过Apple的ImageIO框架进行解析
GIF。
整个扩展最核心还是下面的函数,搞了半天还是Apple的UIImage的类函数。所以重点就是找到
GIF中的每一帧
图片和每一帧的延迟是多少。
只要通过该函数返回的UIImage就是一个带动画的UIImage(记得我当年切了...
可能是因为获取总时长的方法返回的值为 NaN,这可能是由于 MP3 文件的元数据中缺少所需的信息而导致的。您可以尝试使用其他方法来获取 MP3 文件的总时长。
一种可行的方法是使用 AVAudioPlayer 类来获取 MP3 文件的总时长。您可以使用以下代码示例:
let url = URL(fileURLWithPath: "path/to/mp3/file")
let player = try! AVAudioPlayer(contentsOf: url)
let duration = player.duration
请注意,此方法需要在 iOS 设备上运行,无法在模拟器上运行。如果您仍然遇到问题,请检查 MP3 文件的元数据并确保其包含所需的信息。