该文章阅读的SDWebImage的版本为4.3.3。

由于这几个分类都是UIImage的分类,并且内容相对较少,就写在一篇文章中。

1.UIImage+ForceDecode

这个分类为UIImage提供了解码的快捷方法。

1.1.公共方法

/**解码指定的图像对象*/
+ (nullable UIImage *)decodedImageWithImage:(nullable UIImage *)image;
复制代码
/**解码并缩小指定的图像对象*/
+ (nullable UIImage *)decodedAndScaledDownImageWithImage:(nullable UIImage *)image;
复制代码

1.2.实现

+ (UIImage *)decodedImageWithImage:(UIImage *)image {// 如果没传图像对象就返回空if (!image) {return nil;}// 创建变量保存图像数据NSData *tempData;// 解压图像return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(NO)}];
}
复制代码
+ (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image {// 如果没传图像对象就返回空if (!image) {return nil;}// 创建变量保存图像数据NSData *tempData;// 解压并缩小图像return [[SDWebImageCodersManager sharedInstance] decompressedImageWithImage:image data:&tempData options:@{SDWebImageCoderScaleDownLargeImagesKey: @(YES)}];
}
复制代码

2.UIImage+GIF

这个分类用于创建动图

2.1.公共方法

/**根据图像数据创建图像对象*/
+ (UIImage *)sd_animatedGIFWithData:(NSData *)data;
复制代码
/**判断图像对象是否是动图*/
- (BOOL)isGIF;
复制代码

2.2.实现

+ (UIImage *)sd_animatedGIFWithData:(NSData *)data {// 如果没传图像数据就返回空if (!data) {return nil;}// 解码数据生成动图对象return [[SDWebImageGIFCoder sharedCoder] decodedImageWithData:data];
}
复制代码
- (BOOL)isGIF {// 根据images属性判断是否是动图return (self.images != nil);
}
复制代码

3.UIImage+MultiFormat

这个分类提供了数据和图像互相转换的方法

3.1.公共属性

/**动图循环次数*/
@property (nonatomic, assign) NSUInteger sd_imageLoopCount;
复制代码

3.2.公共方法

/**根据指定数据创建图像对象*/
+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data;
复制代码
/**获取图像对象的数据*/
- (nullable NSData *)sd_imageData;
复制代码
/**根据图像格式获取图像对象的数据*/
- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat;
复制代码

3.3.实现

- (NSUInteger)sd_imageLoopCount {NSUInteger imageLoopCount = 0;NSNumber *value = objc_getAssociatedObject(self, @selector(sd_imageLoopCount));if ([value isKindOfClass:[NSNumber class]]) {imageLoopCount = value.unsignedIntegerValue;}return imageLoopCount;
}- (void)setSd_imageLoopCount:(NSUInteger)sd_imageLoopCount {NSNumber *value = @(sd_imageLoopCount);objc_setAssociatedObject(self, @selector(sd_imageLoopCount), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
复制代码
+ (nullable UIImage *)sd_imageWithData:(nullable NSData *)data {// 解码图像数据获取图像对象return [[SDWebImageCodersManager sharedInstance] decodedImageWithData:data];
}
复制代码
- (nullable NSData *)sd_imageData {// 以未知图像格式调用下面方法获取图像数据return [self sd_imageDataAsFormat:SDImageFormatUndefined];
}
复制代码
- (nullable NSData *)sd_imageDataAsFormat:(SDImageFormat)imageFormat {// 创建变量保存图像数据NSData *imageData = nil;// 通过编码获取图像数据if (self) {imageData = [[SDWebImageCodersManager sharedInstance] encodedDataWithImage:self format:imageFormat];}return imageData;
}
复制代码

源码阅读系列:SDWebImage

源码阅读:SDWebImage(一)——从使用入手

源码阅读:SDWebImage(二)——SDWebImageCompat

源码阅读:SDWebImage(三)——NSData+ImageContentType

源码阅读:SDWebImage(四)——SDWebImageCoder

源码阅读:SDWebImage(五)——SDWebImageFrame

源码阅读:SDWebImage(六)——SDWebImageCoderHelper

源码阅读:SDWebImage(七)——SDWebImageImageIOCoder

源码阅读:SDWebImage(八)——SDWebImageGIFCoder

源码阅读:SDWebImage(九)——SDWebImageCodersManager

源码阅读:SDWebImage(十)——SDImageCacheConfig

源码阅读:SDWebImage(十一)——SDImageCache

源码阅读:SDWebImage(十二)——SDWebImageDownloaderOperation

源码阅读:SDWebImage(十三)——SDWebImageDownloader

源码阅读:SDWebImage(十四)——SDWebImageManager

源码阅读:SDWebImage(十五)——SDWebImagePrefetcher

源码阅读:SDWebImage(十六)——SDWebImageTransition

源码阅读:SDWebImage(十七)——UIView+WebCacheOperation

源码阅读:SDWebImage(十八)——UIView+WebCache

源码阅读:SDWebImage(十九)——UIImage+ForceDecode/UIImage+GIF/UIImage+MultiFormat

源码阅读:SDWebImage(二十)——UIButton+WebCache

源码阅读:SDWebImage(二十一)——UIImageView+WebCache/UIImageView+HighlightedWebCache

源码阅读:SDWebImage(十九)——UIImage+ForceDecode/UIImage+GIF/UIImage+MultiFormat相关推荐

  1. Go-Excelize API源码阅读(十九)——SetHeaderFooter

    Go-Excelize API源码阅读(十九)--SetHeaderFooter 开源摘星计划(WeOpen Star) 是由腾源会 2022 年推出的全新项目,旨在为开源人提供成长激励,为开源项目提 ...

  2. Soul网关源码阅读(十)自定义简单插件编写

    Soul网关源码阅读(十)自定义简单插件编写 简介     综合前面所分析的插件处理流程相关知识,此次我们来编写自定义的插件:统计请求在插件链中的经历时长 编写准备     首先我们先探究一下,一个P ...

  3. Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四

    Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四 MetricsHttpAgent的httpGet ServerHttpAgent的httpGet HttpSimple ...

  4. spark 源码分析之十九 -- DAG的生成和Stage的划分

    上篇文章 spark 源码分析之十八 -- Spark存储体系剖析 重点剖析了 Spark的存储体系.从本篇文章开始,剖析Spark作业的调度和计算体系. 在说DAG之前,先简单说一下RDD. 对RD ...

  5. 【转】ABP源码分析二十九:ABP.MongoDb

    这个Module通过建立一个MongoDbRepositoryBase<TEntity> 基类,封装了对MongoDb数据库的操作. 这个module通过引用MongoDB.Driver, ...

  6. udp 使用connect优点_nodejs源码分析第十九章 -- udp模块

    udp不是面向连接的协议,所以使用上会比tcp简单,他和tcp一样,使用四元组来标记通信的双方(单播的情况下).我们看看udp作为服务器和客户端的时候的流程. 1 在c语言中使用udp 1.1 服务器 ...

  7. OpenFire源码学习之十九:在openfire中使用redis插件(上)

    Redis插件 介绍 Redis是目前比较流行的NO-SQL,基于K,V的数据库系统.关于它的相关操作信息,本人这里就不做重复了,相关资料可以看这个网站http://www.redis.io/(官网) ...

  8. js udp通信_nodejs源码分析第十九章 -- udp模块

    udp不是面向连接的协议,所以使用上会比tcp简单,他和tcp一样,使用四元组来标记通信的双方(单播的情况下).我们看看udp作为服务器和客户端的时候的流程. 1 在c语言中使用udp 1.1 服务器 ...

  9. 【转】ABP源码分析三十九:ABP.Hangfire

    ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的. HangfireBackgroundJo ...

  10. 【手写 Vue2.x 源码】第十九篇 - 根据 vnode 创建真实节点

    一,前言 上篇,根据 render 函数,生成 vnode,主要涉及以下几点: 封装 vm._render 返回虚拟节点 _s,_v,_c的实现 本篇,根据 vnode 虚拟节点渲染真实节点 二,根据 ...

最新文章

  1. 一张清华大学教授工资单曝光!想象与现实天壤之别……
  2. 如果重走职场,一定会送自己 8 个锦囊
  3. html5和html的区别是什么(精问)
  4. 案例代码:springboot+shiro配置同一用户多设备登录最大会话数
  5. 整合.NET WebAPI和 Vuejs——在.NET单体应用中使用 Vuejs 和 ElementUI
  6. k8s 手动恢复redis 集群_二进制手动部署k8s-1.14高可用集群(二、集群部署)
  7. 普通电脑能做成瘦客户机吗_阿里云的“无影”云电脑,能不能真的代替传统电脑...
  8. c++学习笔记(12) 需要对对象做拷贝时(深拷贝,浅拷贝),如何重载赋值运算符
  9. 建筑与建筑群综合布线系统工程验收规范_如果这9个方面考虑周到 你的综合布线系统工程可以竣工验收了...
  10. 鸿蒙系统华为mate10,从3899跌至1040,2K分辨率+4000mAh,可升级鸿蒙系统
  11. de4dot使用教程
  12. uniapp调用芯烨xprinter打印机安卓sdk
  13. 领峰:炒黄金白银的关键是掌握技巧
  14. 王之泰201771010131《面向对象程序设计(java)》第七周学习总结
  15. RoaringBitmap
  16. linux 独立冗余磁盘阵列,独立冗余磁盘列阵
  17. 厨神之路一--群英荟萃1
  18. dmp标签_用户标签/用户分群在DMP(数据管理平台)中的应用
  19. Android系统中固件崩溃后使用uevent机制重新加载固件 流程分析
  20. 重新启动oracle 服务,在linux重新启动下如何设置oracle服务自动开启

热门文章

  1. lepus mysql 复制监控_sql_mode=ONLY_FULL_GROUP_BY 导致lepus监控mysql5.7报错
  2. 新海诚没有参与制作的作品_下列哪部作品新海诚没有参与制作
  3. python生成器单线程_【Python】迭代器、生成器、yield单线程异步并发实现详解
  4. android 快应用原理,快应用初探——写一个快应用练练手。
  5. 影响生产计划制定的因素_石料生产线选砂石原骨料时的技巧及影响破碎的因素...
  6. HDLBits 系列(22) Shift register
  7. HDLBits 系列(11)All about Adder
  8. 【 MATLAB 】DFS 与 z 变换之间的关系
  9. Matlab2013a安装简单教程以及遇到的问题解决(反复提示激活问题)
  10. vue 弹窗时 监听手机返回键关闭弹窗(页面不跳转)