我有一张图片的网址(从UIImagePickerController获得),但我的内存中不再有图片(网址是从应用程序的上一次运行中保存的)。我可以再次从网址重新加载UIImage吗?
我看到UIImage有一个imageWithContentsOfFile:但是我有一个URL。我可以使用NSData的dataWithContentsOfURL:来读取网址吗?
EDIT1
根据@Daniel的回答,我尝试了以下代码,但它不起作用……
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];
}
当我运行它时,控制台显示:
-[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出了点问题,如果我找不出来,我想这应该是一个不同的问题。插入以下行后(我粘贴了上面控制台日志中的路径),它可以正常工作:
photoURL = @"file://localhost/Users/gary/Library/Application%20Support/iPhone%20Simulator/3.2/Media/DCIM/100APPLE/IMG_0004.JPG";
发布于 2010-05-06 23:57:25
你可以这样做(同步,但紧凑):
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:MyURL]]];
一种更好的方法是使用苹果的LazyTableImages来保持交互性。
发布于 2012-03-01 19:42:42
你可以试试SDWebImage,它提供了:
配合使用
快速示例:
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
发布于 2014-06-22 05:29:37
swift版本:
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)
https://stackoverflow.com/questions/2782454
复制相似问题