YYImage

YYImage特性

  • 支持以下類型動(dòng)畫圖像的播放/編碼/解碼:
    WebP, APNG, GIF闽颇。
  • 支持以下類型靜態(tài)圖像的顯示/編碼/解碼:
    WebP, PNG, GIF, JPEG, JP2, TIFF, BMP, ICO, ICNS券犁。
  • 支持以下類型圖片的漸進(jìn)式/逐行掃描/隔行掃描解碼:
    PNG, GIF, JPEG, BMP。
  • 支持多張圖片構(gòu)成的幀動(dòng)畫播放络断,支持單張圖片的 sprite sheet 動(dòng)畫裁替。
  • 完全兼容 UIImage 和 UIImageView,使用方便貌笨。
  • 保留可擴(kuò)展的接口弱判,以支持自定義動(dòng)畫。
  • 高效的動(dòng)態(tài)內(nèi)存緩存管理躁绸,以保證高性能低內(nèi)存的動(dòng)畫播放裕循。

用法


顯示動(dòng)畫類型的圖片

// 文件: mygif@3x.gif
UIImage *image = [YYImage imageNamed:@"mygif.gif"];
UIImageView *imageView = [[YYAnimatedImageView alloc] initWithImage:image];
[self.view addSubView:imageView];

播放幀動(dòng)畫

// 文件: frame1.png, frame2.png, frame3.png
NSArray *paths = @[@"/ani/frame1.png", @"/ani/frame2.png", @"/ani/frame3.png"];
NSArray *times = @[@0.1, @0.2, @0.1];
UIImage *image = [YYFrameImage alloc] initWithImagePaths:paths frameDurations:times repeats:YES];
UIImageView *imageView = [YYAnimatedImageView alloc] initWithImage:image];
[self.view addSubView:imageView];

播放sprite sheet動(dòng)畫

// 8 * 12 sprites in a single sheet image
UIImage *spriteSheet = [UIImage imageNamed:@"sprite-sheet"];
NSMutableArray *contentRects = [NSMutableArray new];
NSMutableArray *durations = [NSMutableArray new];
for (int j = 0; j < 12; j++) {
   for (int i = 0; i < 8; i++) {
       CGRect rect;
       rect.size = CGSizeMake(img.size.width / 8, img.size.height / 12);
       rect.origin.x = img.size.width / 8 * i;
       rect.origin.y = img.size.height / 12 * j;
       [contentRects addObject:[NSValue valueWithCGRect:rect]];
       [durations addObject:@(1 / 60.0)];
   }
}
YYSpriteSheetImage *sprite;
sprite = [[YYSpriteSheetImage alloc] initWithSpriteSheetImage:img
                                                contentRects:contentRects
                                              frameDurations:durations
                                                   loopCount:0];
YYAnimatedImageView *imageView = [YYAnimatedImageView new];
imageView.size = CGSizeMake(img.size.width / 8, img.size.height / 12);
imageView.image = sprite;
[self.view addSubView:imageView];

動(dòng)畫播放控制

YYAnimatedImageView *imageView = ...;
// 暫停:
[imageView stopAnimating];
// 播放:
[imageView startAnimating];
// 設(shè)置播放進(jìn)度:
imageView.currentAnimatedImageIndex = 12;
// 獲取播放狀態(tài):
image.currentIsPlayingAnimation;
//上面兩個(gè)屬性都支持 KVO臣嚣。

圖片解碼

// 解碼單幀圖片:
NSData *data = [NSData dataWithContentOfFile:@"/tmp/image.webp"];
YYImageDecoder *decoder = [YYImageDecoder decoderWithData:data scale:2.0];
UIImage image = [decoder frameAtIndex:0 decodeForDisplay:YES].image;

// 漸進(jìn)式圖片解碼 (可用于圖片下載顯示):
NSMutableData *data = [NSMutableData new];
YYImageDecoder *decoder = [[YYImageDecoder alloc] initWithScale:2.0];
while(newDataArrived) {
   [data appendData:newData];
   [decoder updateData:data final:NO];
   if (decoder.frameCount > 0) {
       UIImage image = [decoder frameAtIndex:0 decodeForDisplay:YES].image;
       // progressive display...
   }
}
[decoder updateData:data final:YES];
UIImage image = [decoder frameAtIndex:0 decodeForDisplay:YES].image;
// final display...

圖片編碼

// 編碼靜態(tài)圖 (支持各種常見(jiàn)圖片格式):
YYImageEncoder *jpegEncoder = [[YYImageEncoder alloc] initWithType:YYImageTypeJPEG];
jpegEncoder.quality = 0.9;
[jpegEncoder addImage:image duration:0];
NSData jpegData = [jpegEncoder encode];

// 編碼動(dòng)態(tài)圖 (支持 GIF/APNG/WebP):
YYImageEncoder *webpEncoder = [[YYImageEncoder alloc] initWithType:YYImageTypeWebP];
webpEncoder.loopCount = 5;
[webpEncoder addImage:image0 duration:0.1];
[webpEncoder addImage:image1 duration:0.15];
[webpEncoder addImage:image2 duration:0.2];
NSData webpData = [webpEncoder encode];

圖片類型檢測(cè)

// 獲取圖片類型
YYImageType type = YYImageDetectType(data); 
if (type == YYImageTypePNG) ...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市剥哑,隨后出現(xiàn)的幾起案子硅则,更是在濱河造成了極大的恐慌,老刑警劉巖株婴,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怎虫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡困介,警方通過(guò)查閱死者的電腦和手機(jī)大审,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)座哩,“玉大人徒扶,你說(shuō)我怎么就攤上這事「睿” “怎么了姜骡?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)屿良。 經(jīng)常有香客問(wèn)我圈澈,道長(zhǎng),這世上最難降的妖魔是什么尘惧? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任康栈,我火速辦了婚禮,結(jié)果婚禮上喷橙,老公的妹妹穿的比我還像新娘啥么。我一直安慰自己,他們只是感情好重慢,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布饥臂。 她就那樣靜靜地躺著逊躁,像睡著了一般似踱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稽煤,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天核芽,我揣著相機(jī)與錄音,去河邊找鬼酵熙。 笑死轧简,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匾二。 我是一名探鬼主播哮独,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼拳芙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了皮璧?” 一聲冷哼從身側(cè)響起舟扎,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悴务,沒(méi)想到半個(gè)月后睹限,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讯檐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年羡疗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片别洪。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叨恨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挖垛,到底是詐尸還是另有隱情特碳,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布晕换,位于F島的核電站午乓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏闸准。R本人自食惡果不足惜益愈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夷家。 院中可真熱鬧蒸其,春花似錦、人聲如沸库快。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)义屏。三九已至靠汁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闽铐,已是汗流浹背蝶怔。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兄墅,地道東北人踢星。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像隙咸,于是被迫代替她去往敵國(guó)和親沐悦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子成洗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 前言 YYImage 是一個(gè)強(qiáng)大的iOS圖像框架,是YYKit 的組件之一藏否。具體用法可以參考Demo泌枪。 ** 特性...
    喬克_叔叔閱讀 3,068評(píng)論 3 2
  • YYImage: 功能強(qiáng)大的 iOS 圖像框架。是YYKit組件之一. GitHub地址:https://gith...
    香橙柚子閱讀 11,966評(píng)論 4 7
  • 一秕岛、特性 支持以下類型動(dòng)畫圖像的播放/編碼/解碼: WebP, APNG, GIF碌燕。 支持以下類型靜態(tài)圖像的顯示/...
    強(qiáng)降雨天氣閱讀 709評(píng)論 0 0
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件继薛、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,119評(píng)論 4 61
  • 那年夏天,初中時(shí)期灌具,第一次開始住校生活青团。由于本就在我家小縣城不遠(yuǎn)處,同學(xué)也大都是兒時(shí)都認(rèn)識(shí)的咖楣,因此并未有任何陌生感...
    戀戀芳華閱讀 955評(píng)論 16 25