<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          YYImageiOS 圖像框架

          聯(lián)合創(chuàng)作 · 2023-09-26 02:36

          YYimage 是一個(gè)用于顯示/編碼/解碼動(dòng)畫 WebP、APNG、GIF 等的 iOS 圖像框架。

          特性

          • 支持以下類型動(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)畫。
          • 高效的動(dòng)態(tài)內(nèi)存緩存管理,以保證高性能低內(nèi)存的動(dòng)畫播放。
          • 完全兼容 UIImage 和 UIImageView,使用方便。
          • 保留可擴(kuò)展的接口,以支持自定義動(dòng)畫。
          • 每個(gè)類和方法都有完善的文檔注釋。

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

          // 文件: [email protected]
          UIImage *image = [YYImage imageNamed:@"ani.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 dataWithContentsOfFile:@"/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)圖 (支持各種常見圖片格式):
          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) ...

          安裝

          CocoaPods

          1. 將 cocoapods 更新至最新版本.
          2. 在 Podfile 中添加 pod 'YYImage'。
          3. 執(zhí)行 pod install  pod update
          4. 導(dǎo)入 <YYImage/YYImage.h>。
          5. 注意:pod 配置并沒有包含 WebP 組件, 如果你需要支持 WebP,可以在 Podfile 中添加 pod 'YYImage/WebP'。

          Carthage

          1. 在 Cartfile 中添加 github "ibireme/YYImage"。
          2. 執(zhí)行 carthage update --platform ios 并將生成的 framework 添加到你的工程。
          3. 導(dǎo)入 <YYImage/YYImage.h>。
          4. 注意:carthage framework 并沒有包含 WebP 組件。如果你需要支持 WebP,可以用 CocoaPods 安裝,或者手動(dòng)安裝。

          手動(dòng)安裝

          1. 下載 YYImage 文件夾內(nèi)的所有內(nèi)容。
          2. 將 YYImage 內(nèi)的源文件添加(拖放)到你的工程。
          3. 鏈接以下 frameworks:
            • UIKit
            • CoreFoundation
            • QuartzCore
            • AssetsLibrary
            • ImageIO
            • Accelerate
            • MobileCoreServices
            • libz
          4. 導(dǎo)入 YYImage.h。
          5. 注意:如果你需要支持 WebP,可以將 Vendor/WebP.framework(靜態(tài)庫) 加入你的工程。

          常見問題

          Q: 為什么我不能顯示 WebP 圖片?

          A: 確保 WebP.framework 已經(jīng)被添加到你的工程內(nèi)了。你可以調(diào)用 YYImageWebPAvailable() 來檢查一下 WebP 組件是否被正確安裝。

          Q: 為什么我不能播放 APNG 動(dòng)畫?

          A: 你應(yīng)該禁用 Build Settings 中的 Compress PNG Files  Remove Text Metadata From PNG Files. 或者你也可以把 APNG 文件的擴(kuò)展名改為apng.

          系統(tǒng)要求

          該項(xiàng)目最低支持 iOS 6.0  Xcode 8.0

          瀏覽 26
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大香蕉伊人黄色 | 97成人午夜福利 | 啪啪免费的网站 | 国产又爽 又黄 在线看 | 色综合国产在线 |