ios - CGBitmapContextCreate : unsupported parameter combination: 8 integer bits/component iOS

标签 ios objective-c

<分区>

我在创建上下文时遇到问题..

我看到了很多答案,但没有一个对我有用。

我有以下代码。

CGSize pixelSize = src_img.size;
pixelSize.width = src_img.scale* src_img.size.width;
pixelSize.height = src_img.scale*src_img.size.height;

size_t d_bytesPerRow = pixelSize.width * 4;
unsigned char *imgData = (unsigned char*)malloc(pixelSize.height * d_bytesPerRow);
CGImageRef imageRef = src_img.CGImage;

CGContextRef context =  CGBitmapContextCreate(imgData,
                                              (size_t)pixelSize.width, (size_t)pixelSize.height, 8, d_bytesPerRow,
                                              CGImageGetColorSpace(imageRef), kCGImageAlphaNone);

在控制台中显示错误

CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 24 bits/pixel; 3-component color space; kCGImageAlphaNone; 1754 bytes/row.

我不知道该怎么办。请帮忙

最佳答案

您没有指定 supported pixel formats 之一.图像的色彩空间显然是 RGB 色彩空间。您正在指定 kCGImageAlphaNone。总之,这意味着每个像素 3 个组件并且没有填充。与您指定的每个组件 8 位相结合,得出每个像素 24 位。

所有受支持的像素格式都不允许每像素 24 位。这是另一种说法,它们都不支持带有 kCGImageAlphaNone 的 RGB。如果您没有或不需要 alpha,则需要使用 kCGImageAlphaNoneSkipFirstkCGImageAlphaNoneSkipLast,这意味着每个像素中有一个字节的填充,将每个像素最多增加 32 位.

此外,您几乎总是最好为 data 参数指定 NULL 并为 bytesPerRow 参数指定 0。前者使内存管理更容易。后者不仅更容易,而且允许系统优化缓冲区的对齐。

关于ios - CGBitmapContextCreate : unsupported parameter combination: 8 integer bits/component iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26071578/

相关文章:

ios - Safari 风格的 UIPopoverController

ios - 在 Swift 中使用 WKWebView 进行身份验证

ios - Swift 中的图像加密

iphone - 如何在 iOS 中将 UIImage 保存为渐进式 JPEG 格式?

web-services - 计算服务器上或iOS应用程序上2个点之间的距离哪个更好?

ios - 推送到 UINavigationController 时 UIViewControllers 出现问题 - iOS 7.1

objective-c - 如何将 iPad View 分解为更易于管理的 block ?

ios - UIViewcontroller 不会显示( Storyboard已删除)

iphone - 自定义 UIProgressView 样式

objective-c - 如何使用 Xcode 4 断点 Action