我在 Xcode 中使用 opencv,我得到了从 IplImage 转换为 UIImage 的方法:
-(UIImage *)UIImageFromIplImage:(IplImage *)image {
NSLog(@"IplImage (%d, %d) %d bits by %d channels, %d bytes/row %s", image->width, image->height, image->depth, image->nChannels, image->widthStep, image->channelSeq);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSData *data = [NSData dataWithBytes:image->imageData length:image->imageSize];
CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
CGImageRef imageRef = CGImageCreate(image->width, image->height,
image->depth, image->depth * image->nChannels, image->widthStep,
colorSpace, kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault,
provider, NULL, false, kCGRenderingIntentDefault);
UIImage *ret = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationUp];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);
return ret;
}
问题是,当我将任何图像传递给此方法(png,jpg,tiff)时,会出现此错误 :CGImageCreate:无效图像位/像素:8,请帮助我解决该错误,谢谢。
最佳答案
如果您的图像是灰色的(不是 RGBA),请使用此:
colorSpace = CGColorSpaceCreateDeviceGray();
关于cocoa-touch - <错误> : CGImageCreate: invalid image bits/pixel: 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10298165/