2015-10-17 5 views
0

У меня есть UIImage, и я хочу сделать NSData, а затем сохранить в фили.не удалось сформировать NSData с использованием UIImage

Проблема в том, что я могу сделать UIImage, но когда передайте ее, чтобы сделать NSData Я получаю nil значение. Я пытался как UIImagePNGRepresentation и UIImageJPEGRepresentation

Вот мой код с подробной отладки:

UIImage *img = [self.mImagesArray objectAtIndex:index]; 
NSData *imageData = UIImagePNGRepresentation(img); //nil 
NSData *imgData2 = UIImageJPEGRepresentation(img, 50); //nil i tried chaning 50 to 0.5 it also not working 
[imageData writeToFile:imagePath atomically:YES]; 

Вот изображение, которое показывает, я получаю UIImage, но не в состоянии сформировать NSData:

enter image description here

enter image description here

Edit

Я получаю изображение из UIImagePicker и добавить его в массив:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

if (!self.mImagesArray) 
    self.mImagesArray = [[NSMutableArray alloc] init]; 

[self.mImagesArray addObject:[info objectForKey:UIImagePickerControllerOriginalImage]]; 

} 
+0

Как насчет 'imgData2'? –

+0

, а также nil – Dalvik

+0

Вы можете распечатать результат -> whats your [self.mImagesArray objectAtIndex: index]; содержит –

ответ

0

enter image description here

Попробуйте это.

UIImage *image = [UIImage imageNamed:@"imageName.png"]; 
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)]; 
+0

не работает :(:( – Dalvik

+0

@RahulMishra проверить прикрепленное изображение. – vijay

+0

, но здесь он не работает – Dalvik

0

Из документов UIImagePNGRepresentation

Возвращаемое значение Объект данных, содержащий данные в формате PNG , или nil, если возникла проблема с созданием данных. Эта функция может возвращать нуль, если изображение не имеет данных или если базовый CGImageRef содержит данные в неподдерживаемом формате растрового изображения.


Вы UIImage, но это не гарантирует, что он имеет данные, например,

UIImage *img = [[UIImage alloc] init]; 
NSData *data = UIImagePNGRepresentation(img); 

В этом случае у вас есть нон nilUIImage объект, но он не содержит каких-либо данных, таким образом, он будет возвращать nilNSData

+0

Как я могу решить эту проблему .. но я правильно получаю UIImage .. Я выбираю его из Image Picker – Dalvik

+0

Можете ли вы опубликовать код, как вы создаете изображения, а затем добавляете в свой массив? –

+0

Я обновил свой вопрос – Dalvik

0

Эта линия работает для меня.

UIImage *img = [UIImage imageNamed:@"oval.png"];//[self.mImagesArray objectAtIndex:index]; 
NSData *imageData = UIImagePNGRepresentation(img); 

У вас возникли проблемы с изображением.

UIImagePNGRepresentation может возвращать ноль, если изображение не имеет CGImageRef или неверный формат растрового

пожалуйста, проверьте

0

Кулак все проверки индекса, при котором индекс вы не получаете изображение или получая ноль. Поскольку каждый раз при выборе изображения вы выделяете память на массив. так что прежде всего выделите массив в поле зрения. Будет ли загружаться или просматривать. и попробуйте отладить ваш код, рассмотрев этот вопрос.

Надеюсь, это поможет вам!

+0

HI @meera Я уже выделил массив, и я также получаю объекты Image в массиве. Но не знаю, почему я получаю это значение nil – Dalvik

+0

Фактически, что вы хотите сделать, в соответствии с требованием я могу предложить u. – Meera

+0

I есть сценарий, в котором пользователь может загрузить пять изображений ... и затем он может добавлять или удалять изображения. Количество изображений ограничено пятью, мне нужно создать этот сценарий – Dalvik

Смежные вопросы