5

Мне понравятся изображения UIImagepicker, есть формат PNG и JPG в рулоне камеры.Как узнать это изображение jpg или png iphone

и мне нужно преобразовать его в NSData. Однако мне нужно знать, являются ли эти образы UIImageJPEGRepresentation или UIImagePNGRepresentation, поэтому я мог бы его преобразовать.

UIImage *orginalImage = [info objectForKey:UIImagePickerControllerOriginalImage];  
    [picker dismissViewControllerAnimated:YES completion:nil]; 
    NSData *orgData = UIImagePNGRepresentation(orginalImage); 

ответ

9

Вы не должны знать и не учитывать, что такое внутреннее представление изображений в рулоне камеры. Способы, о которых вы упоминали UIImageJPEGRepresentation и UIImagePNGRepresentation, возвратите вас изображения изображения ролика камеры. Вам решать, какое представление вы хотите использовать.

Резюмируя:

NSData * pngData = UIImagePNGRepresentation(originalImage); 

Вернет вам представление изображения в NSData объекта, в формате PNG.

+6

Иногда вы должны заботиться, потому что если вы сделаете UIImageJPEGRepresentation от изображения JPEG, вы можете сжать излишне уже сжатое изображение (теряют качество и время обработки). Например, вам может потребоваться, чтобы выбранное изображение было дополнительно обработано библиотекой, которая принимает только jpeg. –

4

Когда вызывается метод делегата imagePickerController: didFinishPickingMediaWithInfo: для UIImagePickerController вы получаете URL-адрес ресурса для выбранной выбранной фотографии.

[info valueForKey:UIImagePickerControllerReferenceURL] 

Теперь этот URL-адрес можно использовать для доступа к ресурсу в ALAssetsLibrary. Тогда вам понадобится ALAssetRepresentation этого доступного актива. Из этого ALAssetRepresentation мы можем получить УИП для этого изображения (http://developer.apple.com/library/ios/#DOCUMENTATION/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html)

Может быть, код будет сделать это немного яснее:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    if (!(picker.sourceType == UIImagePickerControllerSourceTypeCamera)) { 
    NSLog(@"User picked image from photo library"); 
    ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease]; 
    [library assetForURL:[info valueForKey:UIImagePickerControllerReferenceURL] resultBlock:^(ALAsset *asset) { 
     ALAssetRepresentation *repr = [asset defaultRepresentation]; 
     if ([[repr UTI] isEqualToString:@"public.png"]) { 
     NSLog(@"This image is a PNG image in Photo Library"); 
     } else if ([[repr UTI] isEqualToString:@"public.jpeg"]) { 
     NSLog(@"This image is a JPEG image in Photo Library"); 
     } 
    } failureBlock:^(NSError *error) { 
     NSLog(@"Error getting asset! %@", error); 
    }]; 
    } 
} 

Как объясняет ИМП, это должен быть верный выстрел ответ на то, как изображение сохраняется в библиотеке фотографий.

1

в Swift 2.2

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    if (!(picker.sourceType == UIImagePickerControllerSourceType.Camera)) { 
     let assetPath = info[UIImagePickerControllerReferenceURL] as! NSURL 
     if assetPath.absoluteString.hasSuffix("JPG") { 

     } else { 

     }