iOS 图片加载方法选择

一、预备知识

计算机中显示的图形分为:位图(像素图)​和矢量图。

位图:计算机屏幕上的图是由屏幕上的发光点(即像素)构成的,每个点用二进制数据来描述其颜色与亮度等信息,这些点是离散的,类似于点阵。多个像素的色彩组合就形成了图像,称之为位图。iOS开发中使用的JPG、PNG、GIF等格式的图像都是位图。

矢量图:又叫向量图,是用一系列计算机指令来描述和记录一幅图,一幅图可以解为一系列由点、线、面等到组成的子图,它所记录的是对象的几何形状、线条粗细和色彩等。生成的矢量图文件存储量很小,特别适用于文字设计、图案设计、版式设计、标志设计、计算机辅助设计(CAD)、工艺美术设计、插图等。

JPG与PNG:​JPG是我们最常见的采用有损压缩对图像信息进行处理的图片格式。​PNG是我们最常见的一种采用无损压缩的图片格式。PNG8最多只能索引256种颜色,所以对于颜色较多的图像不能真实还原;PNG24则可以保存1600多万种颜色,基本能够真实还原我们人类肉眼所可以分别的所有颜色;PNG格式最多可以保存48位颜色通道。PNG就是为取代GIF而生的,而且PNG的压缩算法也要优于GIF,所以只要不是需要动画效果的地方强烈建议都采用PNG格式图片。

​二、imageNamed:还是imageWithContentsOfFile:

1. imageNamed:

用一个指定的名字在系统缓存中查找并返回一个图片对象如果它存在的话。如果缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象。因此imageNamed:的优点是当加载时会缓存图片。所以当图片会频繁的使用时,那么用imageNamed:的方法会比较好。​

​详细用法:

 UIImage*image = [UIImage imageNamed:@"icon.png"];

2.imageWithContentsOfFile:

仅加载图片,图像数据不会缓存。因此对于较大的图片以及使用情况较少时,那就可以用该方法,降低内存消耗。

详细用法:

NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:“png”];
NSData*image = [NSData dataWithContentsOfFile:filePath];  
UIImage*image = [UIImage imageWithData :image];
//or[UIImage imageWithContentsOfFile:filePath];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS开发中,如果你需要在应用程序中加载网络图片,特别是从HTTP协议切换到HTTPS,可以利用URLSession或者第三方库如SDWebImage等来处理这种跨协议的转换。以下是一个基本的过程: 1. **NSURLSession**: 使用`NSURLSessionDataTask`发起网络请求时,你可以创建一个代理(如NSURLSessionDelegate),当接收到服务器返回的状态码为403 (禁止访问) 或者其他明确表示需要升级到安全协议的情况时,动态修改URL为 HTTPS。 ```swift let task = URLSession.shared.dataTask(with: URL(string: "http://example.com/image.jpg")!) { ... } task.resume() ``` 在完成数据任务的回调中检查响应并相应地更新URL: ```swift if let response = task.response as? HTTPURLResponse { if response.statusCode == 301 || response.statusCode == 302 && response.url?.scheme == "http" { let httpsUrl = response.url!.absoluteString.replacingOccurrences(of: "http:", with: "https:") task.cancel() return URLSession.shared.dataTask(with: URL(string: httpsUrl)) { ... }.resume() } } ``` 2. **SDWebImage**: 如果你在使用SDWebImage库,它通常会处理这类转换。只需在配置SDWebImageOptions时开启 `SDWebImageHandleRedirects`,SDWebImage就会自动处理从HTTP到HTTPS的跳转。 ```swift let imageUrl = URL(string: "http://example.com/image.jpg") imageView.sd_setImage(with: imageUrl, options: .handleRedirects) ``` **相关问题--:** 1. SDWebImage库是什么时候引入对HTTP到HTTPS自动转换的支持的? 2. 使用NSURLSession手动处理这种转换有哪些局限性? 3. 有没有其他的第三方库也支持这种特性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值