创建位图上下文时出现此错误:
CGBitmapContextCreate:不支持的参数组合:8个整数位/组件; 24位/像素; 3组分色彩空间; kCGImageAlphaNone; 7936字节/行。
这是代码(请注意,上下文基于现有CGImage的参数:
context = CGBitmapContextCreate(NULL,
(int)pi.bufferSizeRequired.width,
(int)pi.bufferSizeRequired.height,
CGImageGetBitsPerComponent(imageRef),
0,
CGImageGetColorSpace(imageRef),
CGImageGetBitmapInfo(imageRef));
宽度为2626,高度为3981.我将bytesPerRow保留为零,以便自动为我计算,并且自行选择7936。
那么,地球上的不一致之处是什么?这让我疯了。
答案 0 :(得分:18)
由于我不明白的原因,我通过将BitmapInfo参数设置为kCGImageAlphaNoneSkipLast
来解决此问题。
答案 1 :(得分:6)
CGBitmapContextCreate:不支持的参数组合:8个整数位/组件; 24位/像素; 3组分色彩空间; kCGImageAlphaNone; 7936字节/行。
在Quartz 2D Programming文档中列出了supported pixel formats。不支持8/3/24组合,但8/3/32是独立于否使用alpha。
答案 2 :(得分:2)
// The bitsPerComponent and bitmapInfo values are hard-coded to prevent an "unsupported parameter combination" error
现在,这个硬编码修复程序是在调用CGBitmapContextCreate
的方法之一,而不是跟随它的方法之一。所以对我而言,这只是遵循作者自己的建议来解决他的其他方法中的问题;)
显然,CGBitmapInfo
的某些部分未能从相关图片中正确传递,但为什么我不知道。
如果你正在使用alpha通道,请在bitmapInfo中使用这些常量:kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst
否则,如果您正在处理别名问题,我只想指出它是一个非常有用的类!
(另外,值得一提的是这个问题只出现在Xcode 6中....)
答案 3 :(得分:1)
我不确定它会对任何人有所帮助,我只是碰到了类似的问题并按照建议尝试但没有运气。
我的问题是:
CCLabelTTF *header_txt = [CCLabelTTF
labelWithString:header
fontName:fontname fontSize:header_fontsize
dimensions:CGSizeMake(header_fontsize*9, txt_h)
hAlignment:kCCTextAlignmentLeft
vAlignment:kCCVerticalTextAlignmentCenter];
错误:
<错误>:CGBitmapContextCreate:不支持的参数组合:8个整数位/组件; 8位/像素;单组分色彩空间; kCGImageAlphaNone; 2147483648字节/行。
然后我发现一个错误是header_fontsize没有分配任何值(因为我错误地将headerize与header_fontsize错误)。错误在于:dimensions:CGSizeMake(header_fontsize*9, txt_h)
使用header_fontsize取消分配任何值(它不是0,分配header_fontsize = 0
仍然可以);将值重新分配给header_fontsize
解决了问题。
希望这会帮助类似案例的人,例如Sprite案例。
答案 4 :(得分:0)
某些像素格式不受支持。
您可以提前检查是否支持任何图像:
extension CGImage {
public var hasCGContextSupportedPixelFormat: Bool {
guard let colorSpace = self.colorSpace else {
return false
}
#if os(iOS) || os(watchOS) || os(tvOS)
let iOS = true
#else
let iOS = false
#endif
#if os(OSX)
let macOS = true
#else
let macOS = false
#endif
switch (colorSpace.model, bitsPerPixel, bitsPerComponent, alphaInfo, bitmapInfo.contains(.floatComponents)) {
case (.unknown, 8, 8, .alphaOnly, _):
return macOS || iOS
case (.monochrome, 8, 8, .none, _):
return macOS || iOS
case (.monochrome, 8, 8, .alphaOnly, _):
return macOS || iOS
case (.monochrome, 16, 16, .none, _):
return macOS
case (.monochrome, 32, 32, .none, true):
return macOS
case (.rgb, 16, 5, .noneSkipFirst, _):
return macOS || iOS
case (.rgb, 32, 8, .noneSkipFirst, _):
return macOS || iOS
case (.rgb, 32, 8, .noneSkipLast, _):
return macOS || iOS
case (.rgb, 32, 8, .premultipliedFirst, _):
return macOS || iOS
case (.rgb, 32, 8, .premultipliedLast, _):
return macOS || iOS
case (.rgb, 64, 16, .premultipliedLast, _):
return macOS
case (.rgb, 64, 16, .noneSkipLast, _):
return macOS
case (.rgb, 128, 32, .noneSkipLast, true):
return macOS
case (.rgb, 128, 32, .premultipliedLast, true):
return macOS
case (.cmyk, 32, 8, .none, _):
return macOS
case (.cmyk, 64, 16, .none, _):
return macOS
case (.cmyk, 128, 32, .none, true):
return macOS
default:
return false
}
}
}
有关详细信息(以及支持的像素格式列表),请参阅 https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html