2014-04-24 2 views
9

일부 이미지가 포함 된 내 OSX 앱에서 plist를 만들고 있습니다. 그럼 난 iOS 앱에 대한 템플릿으로이 PLIST 파일을 사용하고NSImage to NSData, UIImage 다음

[NSKeyedArchiver archivedDataWithRootObject:self.someImage] 

, 그러나 이것은 OSX만을위한 것입니다 여기에 내가 (NSImageUIImage 및도에 파일을 변환 할 수 없습니다 : 나는하여 이미지를 쓰고 있어요).

나는이 오류가 무엇입니까 :

* Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: '* -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (NSImage)'

는 나에게 이상을 수행 할 수있는 방법을 제안 해주십시오.

답변

16

OS의 X :

NSData *imageData = [self.someImage TIFFRepresentation]; 
// save imageData to file 

아이폰 OS : 대신, NSImageNSData로 변환 NSImageTIFFRepresentation 방법을 사용 NSKeyedArchiver를 사용

파일에서 이미지 데이터를 읽기, UIImage의 +imageWithData: 편의 생성자를 사용하여 UIImage로 변환하십시오.

NSData *imageData = ...; // load imageData from file 
UIImage *image = [UIImage imageWithData: imageData]; 
+1

여기에 'TIFFRepresentation'이 필요하다고 생각합니다. –

+0

죄송합니다. 수정 됨. 감사! –

3

당신은 읽고, 그 내용을 저장 한 후 NSBitmapImageRep를 생성하는 데 필요한 NSData+[UIImage imageWithData:]UIImage에 :

NSString *filepath; 
NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithContentsOfFile:filepath]; 

NSData *data = [imageRep representationUsingType:NSPNGFileType properties:nil]; 
// Save the data 

또한 경우 imageRepWithData:을 사용할 수 있습니다 OS X에서

첫째, 데이터를 저장 이미지의 NSData이 이미 있습니다. 위의 내용은 파일에서로드됩니다 (also의 경우는 NSImage과 같습니다). 아이폰 OS에서 다음

는 :

NSData *data; // Load from a file 
UIImage *image = [UIImage imageWithData:data]; 

representationUsingType:properties:에서 사전에 다른 허용 키 here 참조하십시오.

+1

UIImagePNGRepresentation()을 위의 코드에서 잘못 사용되는 :이 기능은 의미에있는 UIImage 인스턴스를 변환 NSData를 UIImage로 변환하지 않기위한 NSData 객체. 참조 : https://developer.apple.com/library/ios/documentation/uikit/reference/UIKitFunctionReference/Reference/reference.html#//apple_ref/c/func/UIImagePNGRepresentation –

-1

사용을 NSData 내로 NSImage 변환 할 수 있습니다 사과 내장 된 API 다음과 같이

UIImage *MyImage = [UIImage imageNamed:@"WhateverDir/MyImage.png"]; 
NSData *MyImageData = UIImagePNGRepresentation(MyImage); 
+1

NSImage가 아닌 UIImage (즉, OS X)를 변환하고 있습니다 (예 : OS X). –