Получить байты изображения - PullRequest
1 голос
/ 21 октября 2011

Я пытаюсь загрузить байты изображения следующим образом:

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 ]

2 голосов
/ 21 октября 2011

Почему бы не

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

NSData *data = [NSData dataWithContentsOfFile:path];

Вы не можете просто хранить случайные байты в NSString - он попытается преобразовать их в строку и может потерпеть неудачу. Вам необходимо использовать объект NSData для двоичных данных.

Вам также не нужно вообще использовать NSURL; NSBundle даст вам путь в виде строки.

1 голос
/ 21 октября 2011

Хранить байты в NSData:

NSData *bytes = UIImagePNGRepresentation([UIImage imageNamed:@"myImage.png"]);
1 голос
/ 21 октября 2011

Поскольку вы используете URL-адрес файла, используйте [img path] вместо [img absoluteString] во второй строке.

Или используйте [NSURL URLWithPath] в первой строке.

0 голосов
/ 21 октября 2011
 NSData* imageData = UIImagePNGRepresentation("imagename.."); //the image is converted to bytes
...