繁体   English   中英

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

[英]Creating an image format with an unknown type is an error Objective-C Xcode 8

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

这是一个错误。 这只是一个错误的警告。 该应用程序的运行没有发生任何不好的事情,因此请忽略该警告。

我通过苹果文件,并使用此

UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];

didFinishPickingMediaWithInfo方法中。

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

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

[picker dismissViewControllerAnimated:YES completion:NULL];     

}

希望对您有所帮助!

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

将UIImagePickerControllerDelegate方法更新为新方法

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

从以前的方法:

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

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

加上这个

imgPicker.allowsEditing = YES;

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

CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipLast;

而不是CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);

PS:

所以现在我的CGContextRef context如下所示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM