创建具有未知类型的图像格式是错误Objective-C Xcode 8

时间:2016-10-17 12:40:37

标签: ios objective-c uiimagepickercontroller xcode8 ios10

iOS 10 Objective-CXcode 8中的图像选择器中选择图像。我收到了错误 -

  

创建具有未知类型的图像格式是错误

以前的版本没问题。

这是我的代码:

UIImagePickerController* imgPicker=[[UIImagePickerController alloc] init];
imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imgPicker.delegate = self;
[self presentViewController:imgPicker animated:YES completion:nil];

和重新接收图像的委托方法是..

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
       [picker dismissViewControllerAnimated:YES completion:NULL];
       UIImage *myImage = [info objectForKey:UIImagePickerControllerOriginalImage];
}

我也尝试了其他委托功能..

 -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
}

但错误没有发生。

我不确定是Xcode 8的错误吗?
如果有人遇到问题并解决了,请帮助修复它。

6 个答案:

答案 0 :(得分:34)

这是一个错误。这只是一个虚假的警告。应用程序的工作没有坏事,所以忽略警告。

答案 1 :(得分:4)

我浏览苹果文档并使用此

UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];

didFinishPickingMediaWithInfo 方法。

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

UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];  
imageViewPreview.image = chosenImage;  

[picker dismissViewControllerAnimated:YES completion:NULL];     

}
希望这有帮助!

答案 2 :(得分:1)

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
  UIImage *tempImage = [info objectForKey:UIImagePickerControllerEditedImage];
  UIGraphicsBeginImageContext(tempImage.size);
  [tempImage drawInRect:CGRectMake(0, 0, tempImage.size.width, tempImage.size.height)];
  UIImage *image = [UIImage imageWithCGImage:[UIGraphicsGetImageFromCurrentImageContext() CGImage]];

  [self.myimageview setImage:image];
  UIGraphicsEndImageContext();
  [picker dismissViewControllerAnimated:YES completion:nil];
}

答案 3 :(得分:-1)

将UIImagePickerControllerDelegate方法更新为新方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info

来自以前的方法:

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

这解决了我的问题。 IDE版本:Xcode8.2.1

答案 4 :(得分:-2)

添加此内容。

imgPicker.allowsEditing = YES;

答案 5 :(得分:-4)

我通过在BitmapInfo变量中使用CGContextRef context参数的以下初始化来解决此问题:

CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipLast;
而不是 CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);

P.S:

所以现在我的CGContextRef context看起来如下

CGContextRef context = CGBitmapContextCreate(NULL,
        imageSize.width,
        imageSize.height,
        CGImageGetBitsPerComponent(imageRef),
        0,
        colorSpace,
        bitmapInfo);
CGColorSpaceRelease(colorSpace);