首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我能从一个网址加载一个UIImage吗?

我能从一个网址加载一个UIImage吗?
EN

Stack Overflow用户
提问于 2010-05-06 23:52:21
回答 12查看 168K关注 0票数 139

我有一张图片的网址(从UIImagePickerController获得),但我的内存中不再有图片(网址是从应用程序的上一次运行中保存的)。我可以再次从网址重新加载UIImage吗?

我看到UIImage有一个imageWithContentsOfFile:但是我有一个URL。我可以使用NSData的dataWithContentsOfURL:来读取网址吗?

EDIT1

根据@Daniel的回答,我尝试了以下代码,但它不起作用……

代码语言:javascript
复制
NSLog(@"%s %@", __PRETTY_FUNCTION__, photoURL);     
if (photoURL) {
    NSURL* aURL = [NSURL URLWithString:photoURL];
    NSData* data = [[NSData alloc] initWithContentsOfURL:aURL];
    self.photoImage = [UIImage imageWithData:data];
    [data release];
}

当我运行它时,控制台显示:

代码语言:javascript
复制
-[PhotoBox willMoveToWindow:] file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG
*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL length]: unrecognized selector sent to instance 0x536fbe0'

查看调用堆栈,我调用了URLWithString,它依次调用URLWithString:relativeToURL:、initWithString:relativeToURL:、_CFStringIsLegalURLString、CFStringGetLength、forwarding_prep_,、forwarding和-NSObject doesNotRecognizeSelector。

你知道为什么我的NSString (图片地址是0x536fbe0)不响应长度吗?为什么它说它不响应-NSURL长度?它不知道param是一个NSString,而不是一个NSURL吗?

EDIT2

好的,代码的唯一问题是字符串到URL的转换。如果我对字符串进行硬编码,其他一切都会正常工作。所以我的NSString出了点问题,如果我找不出来,我想这应该是一个不同的问题。插入以下行后(我粘贴了上面控制台日志中的路径),它可以正常工作:

代码语言:javascript
复制
photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-05-06 23:57:25

你可以这样做(同步,但紧凑):

代码语言:javascript
复制
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:MyURL]]];

一种更好的方法是使用苹果的LazyTableImages来保持交互性。

票数 324
EN

Stack Overflow用户

发布于 2012-03-01 19:42:42

你可以试试SDWebImage,它提供了:

  1. Asynchronous loading
  2. Caching for offline加载时使用
  3. 占位符图像显示
  4. 与UITableView

配合使用

快速示例:

代码语言:javascript
复制
    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
票数 27
EN

Stack Overflow用户

发布于 2014-06-22 05:29:37

swift版本:

代码语言:javascript
复制
   let url = NSURL.URLWithString("http://live-wallpaper.net/iphone/img/app/i/p/iphone-4s-wallpapers-mobile-backgrounds-dark_2466f886de3472ef1fa968033f1da3e1_raw_1087fae1932cec8837695934b7eb1250_raw.jpg");
    var err: NSError?
    var imageData :NSData = NSData.dataWithContentsOfURL(url,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)
    var bgImage = UIImage(data:imageData)
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2782454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档