zoukankan      html  css  js  c++  java
  • 将GIF图转化为UIImageView可展示的动画数组

    如何将gif转化为图片数组,ios开发
    //引入头文件
    #import <ImageIO/ImageIO.h>
    
    - (NSMutableArray *)loadGifArray
    {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"pross" ofType:@"gif"];
        NSData *data = [NSData dataWithContentsOfFile:path];
        //目标数组
        NSMutableArray *images = [self praseGIFDataToImageArray:data];
    
        return images;
    }
    
    //gif转化为imageView动画数组
    - (NSMutableArray *)praseGIFDataToImageArray:(NSData *)data;
    {
        NSMutableArray *frames = [[NSMutableArray alloc] init];
        CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef)data, NULL);
        CGFloat animationTime = 0.f;
        if (src) {
            size_t l = CGImageSourceGetCount(src);
            frames = [NSMutableArray arrayWithCapacity:l];
            for (size_t i = 0; i < l; i++) {
                CGImageRef img = CGImageSourceCreateImageAtIndex(src, i, NULL);
                NSDictionary *properties = (NSDictionary *)CFBridgingRelease(CGImageSourceCopyPropertiesAtIndex(src, i, NULL));
                NSDictionary *frameProperties = [properties objectForKey:(NSString *)kCGImagePropertyGIFDictionary];
                NSNumber *delayTime = [frameProperties objectForKey:(NSString *)kCGImagePropertyGIFUnclampedDelayTime];
                animationTime += [delayTime floatValue];
                if (img) {
                    [frames addObject:[UIImage imageWithCGImage:img]];
                    CGImageRelease(img);
                }
            }
            CFRelease(src);
        }
        return frames;
    }
  • 相关阅读:
    应用JConsole学习Java GC
    删除MySQL重复数据
    Linux后台运行程序
    Jvm基础(2)-Java内存模型
    一个word合并项目的分布式架构设计
    Jvm基础(1)-Java运行时数据区
    【JPA】01 快速上手
    【Ubuntu】下载安装 20.04.版本 桌面端
    【Ubuntu】下载安装 12.04.5版本 桌面端
    【CentOS】tar包安装Tomcat
  • 原文地址:https://www.cnblogs.com/qiulilin/p/4713124.html
Copyright © 2011-2022 走看看