iOS-GIF分解

叮叮咚咚铛铛,葫芦娃


/**
 分解gif

 @param gifPath gif路径
 @return 返回gif所有的图片地址数组
 */
- (NSMutableArray *)decomposeGIF:(NSString *)gifPath {
    
    //图片保存路径
    NSString *imagepPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    
    //用于保存所有图片的路径
    NSMutableArray *imgPaths=[NSMutableArray array];
    
    //1.gif转换成data
    NSData *gifData=[NSData dataWithContentsOfFile:gifPath];
    
    //2.通过data获取image的数据源
    CGImageSourceRef source =CGImageSourceCreateWithData((CFDataRef)gifData, NULL);
    
    //3.获取gif帧数
    size_t count=CGImageSourceGetCount(source);
    
    for (int i=0; i<count; i++) {
        
        //4.获取单帧图片
        CGImageRef imageRef=CGImageSourceCreateImageAtIndex(source, i, NULL);
        
        //5.根据CGImageRef获取图片
        //[UIScreen mainScreen].scale    是计算屏幕分辨率的
        //UIImageOrientationUp           指定新的图像的绘制方向
        UIImage *image=[UIImage imageWithCGImage:imageRef scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];
        
        //6.释放CGImageRef对象
        CGImageRelease(imageRef);
        
        
        /************************** 保存图片 *************************/
        
        //图片转data
        NSData *imagedata = UIImagePNGRepresentation(image);
        
        //图片保存路径
        NSString *imgpath=[imagepPath stringByAppendingString:[NSString stringWithFormat:@"/%d.png",i]];
        
        //将图片写入
        [imagedata writeToFile:imgpath atomically:YES];
        
        //保存图片路径
        [imgPaths addObject:imgpath];
    }
 
    //释放source
    CFRelease(source);
    
    return imgPaths;
}

demo地址:https://github.com/chjwrr/gif_decomposeAndCompose

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 姓名:沈丹萍 公司:宁波大发化纤有限公司 《六项精进》289期学员 组名:反省二组 【日精进打卡47天】 【知~学...
    好运到来阅读 157评论 0 0
  • “兰陵王”这个词,在范冰冰主演的《妩媚娘》听着耳熟。 山东有个临沂,有个地方叫兰陵县。过年买酒,看到了兰陵大曲,想...
    梦海蓉阅读 388评论 0 0
  • 前言 喜欢看技术性的文章,记得以前总是说设计模式不用太早接触之类的话, 促使我决定好好学习设计模式的原因 现在我觉...
    孟婆汤不解渴阅读 337评论 0 5