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

Posted

技术标签:

【中文标题】创建具有未知类型的图像格式是一个错误 Objective-C Xcode 8【英文标题】:Creating an image format with an unknown type is an error Objective-C Xcode 8 【发布时间】:2016-10-17 12:40:37 【问题描述】:

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 的错误?如果有人遇到这个问题并解决了,请帮助修复它。

【问题讨论】:

***.com/questions/39009889/… ? 它是一个快速版本。我也使用了新的委托方法。但没有工作。 你是怎么解决这个问题的?? 我还不能解决它.. 【参考方案1】:

这是一个错误。这只是一个错误的警告。应用程序的工作没有发生任何坏事,因此请忽略警告。

【讨论】:

有一个问题,当我选择图像然后让 imageData = UIImageJPEGRepresentation(theImage, 1) 通过 POST html 发送它时,我收到此错误并且图像未上传 @BogdanBogdanov 但这与警告无关。如果您对正在尝试做的任何事情有任何疑问,请将其作为问题提出,以便您展示您的代码,我们可以提供帮助。 嗨@Chisx 我从未见过这个警告实际上会停止程序,抱歉。【参考方案2】:

我浏览了苹果文档并使用了这个

UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];

didFinishPickingMediaWithInfo 方法中。

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

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

[picker dismissViewControllerAnimated:YES completion:NULL];     


希望对您有所帮助!

【讨论】:

【参考方案3】:
- (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];

【讨论】:

虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。【参考方案4】:

将 UIImagePickerControllerDelegate 方法更新为新方法

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

从以前的方法:

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

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

【讨论】:

警告是在调用 UIImagePickerControllerDelegate 方法之前生成的。因此,该方法的确切签名与此事无关。【参考方案5】:

添加这个。

imgPicker.allowsEditing = YES;

【讨论】:

plist 添加隐私照片库使用说明。【参考方案6】:

我通过添加在CGContextRef context 变量中使用的BitmapInfo 参数的以下初始化解决了这个问题:

CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipLast;

而不是 CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);

附注:

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

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

【讨论】:

你能解释一下它是如何处理我的问题的吗?

以上是关于创建具有未知类型的图像格式是一个错误 Objective-C Xcode 8的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow Keras 错误:未知的图像文件格式。需要 JPEG、PNG、GIF、BMP 之一

[GraphQL 错误]:消息:“rootMutation”类型的字段“createUser”上的未知参数“email”。位置:[object Object],路径:未定义

伯努利朴素贝叶斯错误:ValueError:未知标签类型:(array([0, 0, 0, ..., 0, 0, 0], dtype=object),)

Caffe 层创建失败 - 层类型未知

上传 JPG 图像以解析服务器失败

创建未知类型的数组。 C#