创建具有未知类型的图像格式是一个错误 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-C
和Xcode 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),)