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;
    }
  • 相关阅读:
    ps使logo背景色透明
    ps切图的基本操作
    json
    py3中reduce
    列表去重的多种方法
    python之小数据池
    基于中间件访问频率限制 每分钟时间间隔最多访问3次
    三种实现登录验证的方式
    时间复杂度
    importlib
  • 原文地址:https://www.cnblogs.com/qiulilin/p/4713124.html
Copyright © 2011-2022 走看看