iOS 创建GIF动图

iOS 创建GIF动图,第1张

当我们网络加载GIF,或者获取到本地GIF的数据data时,可以将data转换成动图UIImage

//获取动图

+ (UIImage *)animatedGIFWithData:(NSData *)data {

    if (!data) {

        return  nil

    }

//获取动图源数据

    CGImageSourceRef source = CGImageSourceCreateWithData(( __bridge CFDataRef)data, NULL )

//获取动图图片集数量

    size_t count = CGImageSourceGetCount(source)

    UIImage * animatedImage

//如果图片集只有一张,那么直接创建成一张图片,否则合成一个动图

    if (count <=1) {

        animatedImage = [[UIImage alloc]initWithData:data]

    } else  {

        NSMutableArray * images = [NSMutableArray array]

//记录动图总时长

        NSTimeInterval duration =0.0f

        //遍历每张图片

 亏信       for (size_t i =0i <counti++) {

            CGImageRef image =CGImageSourceCreateImageAtIndex(source, i, NULL )

            //获取单张动图时间间距

            duration += [ self  frameDurationAtIndex:i source:source]

   森圆         [images addObject:[UIImage imageWithCGImage:image scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp]]

            CGImageRelease(image)

        }

        //若未获取到时长,,自定义时长为0.1x张数,,这里可以根据需求自定义

        if (!duration) {

            duration = (1.0f/10.0f) * count

        }

        //创建动图

        animatedImage = [UIImage animatedImageWithImages:images duration:duration]

    }

    CFRelease(source)

    return  animatedImage

}

+ ( float )frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source {

    float  frameDuration =0.1f

    CFDictionaryRef cfFrameProperties = CGImageSourceCopyPropertiesAtIndex(source, index, nil )

    NSDictionary * frameProperties = ( __bridge NSDictionary*)cfFrameProperties

    NSDictionary * gifProperties = frameProperties[(NSString*)kCGImagePropertyGIFDictionary]

    NSNumber * delayTimeUnclampedProp = gifProperties[(NSString*)kCGImagePropertyGIFUnclampedDelayTime]

    if (delayTimeUnclampedProp) {

 销春轮       frameDuration = [delayTimeUnclampedProp floatValue]

    }

    else {

        NSNumber * delayTimeProp = gifProperties[(NSString*)kCGImagePropertyGIFDelayTime]

        if (delayTimeProp) {

            frameDuration = [delayTimeProp floatValue]

        }

    } 

    CFRelease(cfFrameProperties)

    return  frameDuration

}

工具:iPhone13、iOS16.0.2、GIF制作6.1.16&&美图秀秀9.6.80。

步骤一:点击素材进入GIF制作视频素材页面,页面选择你要制作的动图素材点击。

步骤二:拉动态拿链进度条读取完成,进入编辑页面,页面底部拉动进度条,调整动图速帆孙度。

步骤三:点击GIF大小页面点击保存,翻转进入分享、保存页面,点击GIF大小图标。

步骤四:点击保存d出调整数据窗口,点击保存到照片应用,即可完成GIF动图的制作。

GIF的全称是GraphicsInterchangeFormat,可译为图形交换格式,敏薯用于以超文本标志语言(HypertextMarkupLanguage)方式显示索引彩色图像,在因特网和其他在线服务系统上得到广泛应用。GIF是一种公用的图像文件格式标准,版权归CompuServe公司所有。

如下:

1、打开苹果手机的手机硬件管家应用,点击捷径精选。

2、输入GIF进行搜物坦索,点击live photo转gif。

3、在捷径界罩正桐面,点击下方的获取捷径。

4、点击后,会看到捷径的详情,点击右上方的完成的选清氏项。

5、完成后,在手机的捷径内,找到该捷径并点击。

6、点击运行后,在页面d出的窗口点击运行捷径。

7、点击后自动跳转到苹果手机的相册,选择需要转换的live Photo照片。

8、在d出的窗口中,选择每张照片制作的秒数,点击完成。

9、点击后可看到转换为GIF的照片效果,点击完成保存。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12350469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存