【发布时间】:2013-02-22 19:05:26
【问题描述】:
“img”实际上是一个带有URL的字符串,但我实际上也用它作为文件名
NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:img];
NSURL *url = [NSURL URLWithString:img];
NSData *imageData = [NSData dataWithContentsOfURL:url];
[imageData writeToFile:storePath atomically:TRUE];
在我的视图控制器中,我得到了这个:
UIImage *img = [[UIImage alloc] initWithContentsOfFile:self.initialImg];
if(img == nil) NSLog(@"image is nil");
[self.image setImage:img];
"initialImg" 是一个 NSString,其 url 与 "img" 中的相同。我还用 test.png 之类的另一个字符串更改了“img”和“initialImg”,但这也不起作用。
它打印出“image is nil”,但不确定为什么它是 nil...
编辑:
现在我得到了:
NSURL *url = [NSURL URLWithString:img];
NSData *imageData = [NSData dataWithContentsOfURL:url];
UIImage *uiImage=[UIImage imageWithData:imageData];
NSData *pngData = UIImagePNGRepresentation(uiImage);
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"image.png"];
[pngData writeToFile:filePath atomically:YES];
在另一个视图控制器中的 viewDidLoad 函数中:
UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"image.png"];
if(img == nil) NSLog(@"image is nil");
[self.image setImage:img];
它仍然显示“图像为零”,我更改了网址,但它们是正确的
【问题讨论】:
-
一般情况下你不能使用 URL 作为文件名(见stackoverflow.com/a/6114531/792677),贴一个你想使用的示例文件名,以便我们看看是不是这样。
-
正如我所说,我已经尝试使用“test.png”对其进行更改,但它仍然显示图像为 nil
-
如果你按照你说的做了(“用 test.png 之类的另一个字符串更改了“img”和“initialImg”),图像没有被下载,因为 test.png 不太可能是图像的有效 URL加载。请说明你做了什么。
-
在 viewDidLoad 你做错了。您已将数据写入目录,因此首先读取数据然后转换为图像,因为您需要
filePath不仅图像名称见我的答案
标签: ios objective-c