ios 从网络上获取图片并在UIImageView中显示
ios 从网络上获取图片
-(UIImage *) getImageFromURL:(NSString *)fileURL {
NSLog(@"执行图片下载函数");
UIImage * result;
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
result = [UIImage imageWithData:data];
return result;
}
二:
先解释下以下代码中的变量:
picsURL是一个存储URL地址的数组
choice是选择图片的索引数
self.imageView是View中的UIImageView
其实显示一幅网络上的图片十分简单,如下2行代码即可。
UIImage *image=[UIImage imageWithData:[NSDatadataWithContentsOfURL:[NSURLURLWithString:[picsURL objectAtIndex:choice]]]];
[self.imageView setImage:image];
但是这种方法是同步获取的,如果图片十分大的话,界面就会卡死了,所以一般采取异步方式来获取,如下:
_data是一个NSMutableData
- (
void
)connection:(
NSURLConnection
*)connection didReceiveResponse:(
NSURLResponse
*)response{
//可以在显示图片前先用本地的一个loading.gif来占位。
UIImage *img = [[UIImage alloc] initWithContentsOfFile:@
"loading.gif"
];
[
self
.imageView setImage:img];
_data = [[
NSMutableData
alloc] init];
//保存接收到的响应对象,以便响应完毕后的状态。
_response = response;
}
- (
void
)connection:(
NSURLConnection
*)connection didReceiveData:(
NSData
*)data {
//_data为NSMutableData类型的私有属性,用于保存从网络上接收到的数据。
//也可以从此委托中获取到图片加载的进度。
[_data appendData:data];
NSLog
(@
"%lld%%"
, data.length/_response.expectedContentLength * 100);
}
- (
void
)connection:(
NSURLConnection
*)connection didFailWithError:(
NSError
*)error{
//请求异常,在此可以进行出错后的操作,如给UIImageView设置一张默认的图片等。
}
- (
void
)connectionDidFinishLoading:(
NSURLConnection
*)connection{
//加载成功,在此的加载成功并不代表图片加载成功,需要判断HTTP返回状态。
NSHTTPURLResponse
*response=(
NSHTTPURLResponse
*)_response;
if
(response.statusCode == 200){
//请求成功
UIImage *img=[UIImage imageWithData:_data];
[
self
.imageView setImage:img];
}
}
这样就可以异步来加载图片了,提升了用户体验。
ios 从网络上获取图片并在UIImageView中显示的更多相关文章
- ios 从网络上获取图片
-(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIImage * result; N ...
- 【iOS开发-从网络上获取图片尺寸】
实际开发过程中,容易碰到从网络上获取图片尺寸的场景,比如一个UIImageView要装载从网络上获取的图片,但要先设置其frame,此时又不知道图片尺寸,就要从网络上获取尺寸了.为了最好的用户体验,一 ...
- Android 多线程:使用Thread和Handler (从网络上获取图片)
当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件,并把相关的事件分 ...
- iOS 通过网络请求获取图片的下载歌曲
1.导入代理<NSURLConnectionDataDelegate> @interface ViewController ()<NSURLConnectionDataDelegat ...
- 从网络上获取图片并保存在sdCard上
package com.aib.soft; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileO ...
- 从网络上获取图片,并写入excel文件
package com.weChat.utils; import com.manage.utils.DateUtil;import com.manage.utils.MD5Util;import or ...
- ImageView显示网络上的图片
ImageView显示网络上的图片 一.简介 二.方法 1)ImageView显示网络上的图片方法 第一步:从网络上下载图片 byte[] byteArr = downImage();//这个是自己写 ...
- [Android]通过setImageURI设置网络上面的图片
设置imageView显示网络上的图片 picUrl = new URL(getIntent().getExtras().getString("map_url")); Bitmap ...
- iOS开发——根据Url 获取图片尺寸
转自:http://www.oschina.net/code/snippet_2248391_53038 // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:( ...
随机推荐
- AngularJS 中文资料+工具+库+Demo 大搜集
中文学习资料: 中文资料且成系统的就这么多,优酷上有个中文视频. http://www.cnblogs.com/lcllao/archive/2012/10/18/2728787.html 翻译的 ...
- 《javascript高级程序设计》第八章 The Browser Object Model
8.1 window 对象 8.1.1 全局作用域 8.1.2 窗口关系及框架 8.1.3 窗口位置 8.1.4 窗口大小 8.1.5 导航和打开窗口 8.1.6 间歇调用和超时调用 8.1.7 系统 ...
- angular-ui-router状态不变刷新页面
需求: 当前在A页面状态,要求在点击A状态时,可以刷新A状态. 解决方法:在ui-sref状态切换的标签中添加属性 ui-sref-opts="{reload: true}" ...
- Mybatis 学习-1
本次MyBatis基础实例教程主要讲述MyBatis在项目中的配置方法,实体对象的关系映射.关联关系,以及如何实现一个BaseDao的功能 实例数据库的表结构 CREATE TABLE `blog_u ...
- 文件I/O
Linux顶层目录结构: / 根目录├── bin 存放用户二进制文件├── boot 存放内核引导配置文件├── dev 存放设备文件├── etc ...
- openCV1
openCV是一个提供有C++ , android , python的开源图像处理的类库 中文论坛的网址是http://www.opencv.org.cn/forum.php?mod=forumdis ...
- uva----(10794) A Different Task
A Different Task The (Three peg) Tower of Hanoi problem is a popular one in computer science. Bri ...
- 9. shell环境
• printenv –打印部分或所有的环境变量 • set –设置 shell 选项 • export —导出环境变量,让随后执行的程序知道. • alias –创建命令别名 1.shell环境:s ...
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”, ...
- 如何打开asp.net中的出错提示?在程序发布后
答案:修改其中的一个配置节点,<customErrors mode="On"/>