iOS学习笔记--gif图片分解

gif图片分解的过程可以分为以下四步:

 1.获取gif图片的数据
 2.将gif图片分解成帧
 3.将单帧数据转化为UIimage
 4.单帧图片保存

在这之前需要在工程中添加framework:ImageIO和MobileCoreServices

#import <ImageIO/ImageIO.h>
#import <MobileCoreServices/MobileCoreServices.h>
-(void)gifPictureDecomposition:(NSString*)pictureName
{
   //1.获取gif图片数据
    //将图片数据转化为data
    NSData * data = [NSData dataWithContentsOfFile:gifpathsource];

    CGImageSourceRef sourec = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);

    //2.将gif图片分解成帧

    size_t count = CGImageSourceGetCount(sourec);

    //定义数组保存单帧图片数据
    self.tmpArr = [[NSMutableArray alloc]init];

    for (size_t i = 0; i < count; i++)
    {
        CGImageRef imageRef = CGImageSourceCreateImageAtIndex(sourec, i, NULL);

    //3.将单帧图片转化为UIimage
        UIImage * image = [UIImage imageWithCGImage:imageRef scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];

        [self.tmpArr addObject:image];

        //释放imageRef
        CGImageRelease(imageRef);
    }
    //释放sourec
    CFRelease(sourec);

    //4.单帧图片保存

    int i = 0;
    for (UIImage * image in self.tmpArr)
    {
        NSData * data = UIImagePNGRepresentation(image);

        NSArray * path = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);

        NSString * gifpath = path[0];

        NSString * pathNum = [gifpath stringByAppendingString:[NSString stringWithFormat:@"%d.png",i]];

        i++;

        [data writeToFile:pathNum atomically:NO];

         NSLog(@"%@",path);//图片存储的路径
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值