ваше использование array
только запутывает то, что вы в основном делаете:
NSData *data = im;
Что не может работать, потому что im
- это UIImage
, а не NSData
и не подкласс.
То, что вы хотите сделать, это создать новый NSData
и инициализировать его с содержимым изображения. Поскольку вы получили CGImageRef
, я предлагаю использовать его напрямую, без использования UIImage
между ними.
CGDataProviderRef imageDataProvider = CGImageGetDataProvider(ref);
CFDataRef imageData = CGDataProviderCopyData(imageDataProvider);
NSData *data = (NSData*) imageData;
Обратите внимание, что можно приводить CFDataRef
к NSData*
, потому что CFData «соединен бесплатно» со своим аналогом Cocoa Foundation, NSData.
Надеюсь, это поможет.
(не забудьте отпустить data
, когда закончите)