电子发烧友App

硬声App

扫码添加小助手

加入工程师交流群

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>YYImage iOS图像框架

YYImage iOS图像框架

2022-06-23 | zip | 13.73 MB | 次下载 | 2积分

资料介绍

授权协议 MIT
开发语言 Objective-C
软件类型 开源软件
所属分类 iOS代码库图像(Image)

软件简介

YYimage 是一个用于显示/编码/解码动画 WebP、APNG、GIF 等的 iOS 图像框架。

特性

  • 支持以下类型动画图像的播放/编码/解码:
        WebP, APNG, GIF。
  • 支持以下类型静态图像的显示/编码/解码:
        WebP, PNG, GIF, JPEG, JP2, TIFF, BMP, ICO, ICNS。
  • 支持以下类型图片的渐进式/逐行扫描/隔行扫描解码:
        PNG, GIF, JPEG, BMP。
  • 支持多张图片构成的帧动画播放,支持单张图片的 sprite sheet 动画。
  • 高效的动态内存缓存管理,以保证高性能低内存的动画播放。
  • 完全兼容 UIImage 和 UIImageView,使用方便。
  • 保留可扩展的接口,以支持自定义动画。
  • 每个类和方法都有完善的文档注释。

显示动画类型的图片

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

播放帧动画

// 文件: 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 动画

// 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];

动画播放控制

YYAnimatedImageView *imageView = ...;
// 暂停:
[imageView stopAnimating];
// 播放:
[imageView startAnimating];
// 设置播放进度:
imageView.currentAnimatedImageIndex = 12;
// 获取播放状态:
image.currentIsPlayingAnimation;
//上面两个属性都支持 KVO。

图片解码

// 解码单帧图片:
NSData *data = [NSData dataWithContentsOfFile:@"/tmp/image.webp"];
YYImageDecoder *decoder = [YYImageDecoder decoderWithData:data scale:2.0];
UIImage image = [decoder frameAtIndex:0 decodeForDisplay:YES].image;
	
// 渐进式图片解码 (可用于图片下载显示):
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...

图片编码

// 编码静态图 (支持各种常见图片格式):
YYImageEncoder *jpegEncoder = [[YYImageEncoder alloc] initWithType:YYImageTypeJPEG];
jpegEncoder.quality = 0.9;
[jpegEncoder addImage:image duration:0];
NSData jpegData = [jpegEncoder encode];
 
// 编码动态图 (支持 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];

图片类型探测

// 获取图片类型
YYImageType type = YYImageDetectType(data); 
if (type == YYImageTypePNG) ...

安装

CocoaPods

  1. 将 cocoapods 更新至最新版本.
  2. 在 Podfile 中添加 pod 'YYImage'
  3. 执行 pod install  pod update
  4. 导入
  5. 注意:pod 配置并没有包含 WebP 组件, 如果你需要支持 WebP,可以在 Podfile 中添加 pod 'YYImage/WebP'

Carthage

  1. 在 Cartfile 中添加 github "ibireme/YYImage"
  2. 执行 carthage update --platform ios 并将生成的 framework 添加到你的工程。
  3. 导入
  4. 注意:carthage framework 并没有包含 WebP 组件。如果你需要支持 WebP,可以用 CocoaPods 安装,或者手动安装。

手动安装

  1. 下载 YYImage 文件夹内的所有内容。
  2. 将 YYImage 内的源文件添加(拖放)到你的工程。
  3. 链接以下 frameworks:
    • UIKit
    • CoreFoundation
    • QuartzCore
    • AssetsLibrary
    • ImageIO
    • Accelerate
    • MobileCoreServices
    • libz
  4. 导入 YYImage.h
  5. 注意:如果你需要支持 WebP,可以将 Vendor/WebP.framework(静态库) 加入你的工程。

常见问题

Q: 为什么我不能显示 WebP 图片?

A: 确保 WebP.framework 已经被添加到你的工程内了。你可以调用 YYImageWebPAvailable() 来检查一下 WebP 组件是否被正确安装。

Q: 为什么我不能播放 APNG 动画?

A: 你应该禁用 Build Settings 中的 Compress PNG Files  Remove Text Metadata From PNG Files. 或者你也可以把 APNG 文件的扩展名改为apng.

系统要求

该项目最低支持 iOS 6.0  Xcode 8.0

 

图像 iOS
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1矽力杰 Silergy SY7215A 同步升压调节器 规格书 Datasheet 佰祥电子
  2. 1.12 MB  |  5次下载  |  免费
  3. 2HT81696H 内置升压的30W立体声D类音频功放数据手册
  4. 1.21 MB   |  1次下载  |  免费
  5. 3HTA6863 3W超低噪声超低功耗单声道D类音频功率放大器数据手册
  6. 0.87 MB   |  次下载  |  免费
  7. 4南芯 Southchip SC8802C 充电控制器 规格书 Datasheet 佰祥电子
  8. 88.16 KB  |  次下载  |  免费
  9. 5矽力杰 Silergy SY7065 同步升压转换器 规格书 Datasheet 佰祥电子
  10. 910.67 KB  |  次下载  |  免费
  11. 6矽力杰 Silergy SY7066 同步升压转换器 规格书 Datasheet 佰祥电子
  12. 989.14 KB  |  次下载  |  免费
  13. 7WD6208A产品规格书
  14. 631.24 KB  |  次下载  |  免费
  15. 8NB685 26 V,12 A,低静态电流,大电流 同步降压变换器数据手册
  16. 1.64 MB   |  次下载  |  2 积分

本月

  1. 1EMC PCB设计总结
  2. 0.33 MB   |  12次下载  |  免费
  3. 2PD取电芯片 ECP5702规格书
  4. 0.88 MB   |  5次下载  |  免费
  5. 3矽力杰 Silergy SY7215A 同步升压调节器 规格书 Datasheet 佰祥电子
  6. 1.12 MB  |  5次下载  |  免费
  7. 4氮化镓GaN FET/GaN HEMT 功率驱动电路选型表
  8. 0.10 MB   |  3次下载  |  免费
  9. 5PD取电芯片,可取5/9/12/15/20V电压ECP5702数据手册
  10. 0.88 MB   |  3次下载  |  免费
  11. 6SY50655 用于高输入电压应用的伪固定频率SSR反激式稳压器英文资料
  12. 1.01 MB   |  3次下载  |  免费
  13. 7怎么为半导体测试仪选择精密放大器
  14. 0.65 MB   |  2次下载  |  免费
  15. 8SY52341 次级侧同步整流英文手册
  16. 0.94 MB   |  2次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935137次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420064次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233095次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191469次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183360次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81606次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73832次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65991次下载  |  10 积分