ios如何加載gif圖片

ios如何加載gif圖片

直接使用SDWebImage第三方庫就可以了

這里主要使用了UIImage的類方法

+ (nullable UIImage *)animatedImageWithImages:(NSArray<UIImage *> *)images duration:(NSTimeInterval)duration NS_AVAILABLE_IOS(5_0);

需要兩個參數,一個是一組圖片資源,一個是動畫執(zhí)行時間,這個執(zhí)行時間是所有幀執(zhí)行的總時間.因此需要計算這兩個參數.
圖片的輸入輸出需要#import <ImageIO/ImageIO.h>這個頭文件
計算上面兩個參數,需要獲取gif的圖片資源文件,獲取其相關屬性.寫了一個分類方法具體代碼如下:

/**
 承載gif內容的image對象
 圖片名稱,一般不帶后綴名
 @param gifName gif圖片名稱
 @return  承載gif內容的image對象
 */
+(UIImage *)imageNamedGifName:(NSString *)gifName{
    //1.找到文件獲取文件數據
    if ([gifName hasSuffix:@".gif"]) {
        gifName = [gifName stringByReplacingOccurrencesOfString:@".gif" withString:@""];
    }
    NSURL *url = [[NSBundle mainBundle] URLForResource:gifName withExtension:@".gif"];
    NSData *data = [NSData dataWithContentsOfURL:url];
    if (!data) {
        return nil;
    }
    //2.獲取文件資源 這里需要導入imageIO類
    CGImageSourceRef sourceRef = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
    size_t count =  CGImageSourceGetCount(sourceRef);
    NSTimeInterval douration = 0;//存儲gif動畫總時間
    NSMutableArray *images = [NSMutableArray arrayWithCapacity:3];//儲存的圖片
    for (size_t i = 0; i < count; i++) {
        //獲取每一張圖片 并保存需要的信息
     CGImageRef imageRef =  CGImageSourceCreateImageAtIndex(sourceRef, i, NULL);
        if (imageRef) {
            [images addObject:[UIImage imageWithCGImage:imageRef]];
         NSDictionary *dict = (__bridge NSDictionary *) CGImageSourceCopyPropertiesAtIndex(sourceRef, i, NULL);
         NSDictionary *gifPorperty = dict[(__bridge NSString *)kCGImagePropertyGIFDictionary];
           NSNumber *unclampedDelayTime = gifPorperty[(__bridge NSString *)kCGImagePropertyGIFUnclampedDelayTime];
            float thisDelyTime = 0;
            if (unclampedDelayTime) {
                thisDelyTime = unclampedDelayTime.floatValue;
            }else{
                NSNumber *delyTime = gifPorperty[(__bridge NSString *)kCGImagePropertyGIFDelayTime];
                thisDelyTime = delyTime.floatValue;
            }
            //如果低于10ms 設置成100ms參考如下解釋
            // Many annoying ads specify a 0 duration to make an image flash as quickly as possible.
            // We follow Firefox's behavior and use a duration of 100 ms for any frames that specify
            // a duration of <= 10 ms. See <rdar://problem/7689300> and <http://webkit.org/b/36082>
            // for more information.
            if (thisDelyTime <= 0.001f) {
                thisDelyTime = 0.1f;
            }
            douration += thisDelyTime;
        }
        CGImageRelease(imageRef);
    }
    CFRelease(sourceRef);
    //獲得最終圖片
    return [UIImage animatedImageWithImages:images duration:douration];;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末燎潮,一起剝皮案震驚了整個濱河市硫眨,隨后出現的幾起案子末融,更是在濱河造成了極大的恐慌节仿,老刑警劉巖晤锥,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異廊宪,居然都是意外死亡查近,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門挤忙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谈喳,你說我怎么就攤上這事册烈。” “怎么了婿禽?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵赏僧,是天一觀的道長。 經常有香客問我扭倾,道長淀零,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任膛壹,我火速辦了婚禮驾中,結果婚禮上,老公的妹妹穿的比我還像新娘模聋。我一直安慰自己肩民,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布链方。 她就那樣靜靜地躺著持痰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祟蚀。 梳的紋絲不亂的頭發(fā)上工窍,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音前酿,去河邊找鬼患雏。 笑死,一個胖子當著我的面吹牛罢维,可吹牛的內容都是我干的纵苛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼攻人!你這毒婦竟也來了取试?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤怀吻,失蹤者是張志新(化名)和其女友劉穎瞬浓,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體蓬坡,經...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡猿棉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了屑咳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萨赁。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兆龙,靈堂內的尸體忽然破棺而出杖爽,到底是詐尸還是另有隱情,我是刑警寧澤紫皇,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布慰安,位于F島的核電站,受9級特大地震影響聪铺,放射性物質發(fā)生泄漏化焕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一铃剔、第九天 我趴在偏房一處隱蔽的房頂上張望撒桨。 院中可真熱鬧,春花似錦键兜、人聲如沸元莫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽踱蠢。三九已至,卻和暖如春棋电,著一層夾襖步出監(jiān)牢的瞬間茎截,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工赶盔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留企锌,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓于未,卻偏偏與公主長得像撕攒,于是被迫代替她去往敵國和親陡鹃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內容