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

问题描述 投票:18回答:6

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的错误吗? 如果任何人遇到问题并解决了请帮助解决它。

ios objective-c uiimagepickercontroller xcode8 ios10
6个回答
34
投票

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


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];     

}

希望这个帮助!


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];
}

-1
投票

将UIImagePickerControllerDelegate方法更新为新方法

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

从以前的方法:

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

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


-2
投票

加上这个。

imgPicker.allowsEditing = YES;

-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);
© www.soinside.com 2019 - 2024. All rights reserved.