获取图像字节

时间:2011-10-21 09:45:33

标签: iphone nsstring nsurl nsbundle

我正在尝试加载像这样的图像字节:

NSURL *img = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"img" ofType:@"png"] isDirectory:NO];
NSString * test = [NSString stringWithContentsOfFile:[img absoluteString] encoding:NSASCIIStringEncoding error:&err];

但我总是得到以下错误:

Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn\u2019t be completed. 
(Cocoa error 260.)" UserInfo=0xc02abf0 
{NSFilePath=file://localhost/Users/admin/Library/Application%20Support/iPhone%20Simulator/4.3.2/Applications/C55551DB-152A-43D6-A1E0-9845105709D6/myApp.app/img.png,
 NSUnderlyingError=0xc02ccc0 "The operation couldn\u2019t be completed. Folder or file does not exist"}

但是文件存在,如果我将NSFilePath复制/粘贴到浏览器中,它会找到图像。可能有什么不对?

4 个答案:

答案 0 :(得分:2)

为什么不

NSString *path = [[NSBundle mainBundle] pathforResource:@"img" ofType:"png"];

NSData *data = [NSData dataWithContentsOfFile:path];

你不能只在NSString中存储随机字节 - 它会尝试将它们转换为字符串并可能失败。您需要将NSData对象用于二进制数据。

您根本不需要使用NSURL; NSBundle将为您提供一个字符串路径。

答案 1 :(得分:1)

在使用文件网址时,请在第二行使用[img path]代替[img absoluteString]

或在第一行使用[NSURL URLWithPath]

答案 2 :(得分:1)

在NSData中存储字节:

NSData *bytes = UIImagePNGRepresentation([UIImage imageNamed:@"myImage.png"]);

答案 3 :(得分:0)

 NSData* imageData = UIImagePNGRepresentation("imagename.."); //the image is converted to bytes