gpt4 book ai didi

cocoa - 解码 CGCreateImage 中忽略的值

转载 作者:行者123 更新时间:2023-12-03 16:38:57 25 4
gpt4 key购买 nike

我正在使用以下代码创建单色图像:

  CGColorSpaceRef cgColorSpace = CGColorSpaceCreateDeviceGray();
CGImageRef cgImage = CGImageCreate (width, height, 1, 1, rowBytes, colorSpace, 0, dataProvider, decodeValues, NO, kCGRenderingIntentDefault);

其中 decodeValues 是由 2 个 CGFloat 组成的数组,等于 {0,1}。这给了我一个很好的图像,但显然我的数据(来自 PDF 图像蒙版)是白底黑字,而不是黑底白字。为了反转图像,我尝试将 decodeValues 的值设置为 {1,0},但这根本没有改变任何东西。实际上,无论我在 decodeValues 中输入什么无意义的值,我都会得到相同的图像。

为什么这里忽略decodeValues?如何反转黑白?

最佳答案

这里有一些用于创建和绘制单色图像的代码。它与您的相同,但具有更多上下文(并且无需进行必要的清理):

size_t width = 200;
size_t height = 200;
size_t bitsPerComponent = 1;
size_t componentsPerPixel = 1;
size_t bitsPerPixel = bitsPerComponent * componentsPerPixel;
size_t bytesPerRow = (width * bitsPerPixel + 7)/8;
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();
CGBitmapInfo bitmapInfo = kCGImageAlphaNone;
CGFloat decode[] = {0.0, 1.0};
size_t dataLength = bytesPerRow * height;
UInt32 *bitmap = malloc( dataLength );
memset( bitmap, 255, dataLength );

CGDataProviderRef dataProvider = CGDataProviderCreateWithData( NULL, bitmap, dataLength, NULL);

CGImageRef cgImage = CGImageCreate (
width,
height,
bitsPerComponent,
bitsPerPixel,
bytesPerRow,
colorspace,
bitmapInfo,
dataProvider,
decode,
false,
kCGRenderingIntentDefault
);

CGRect destRect = CGRectMake(0, 0, width, height);
CGContextDrawImage( context, destRect, cgImage );

如果我将解码数组更改为 CGFloatdecode[] = {0.0, 0.0}; 我总是得到黑色图像。如果您已经尝试过,但它没有任何效果(您说无论您使用什么值,您都会得到相同的图像),或者:您实际上并没有传递这些值,但您认为您是,或者:不知何故,您不是实际检查 CGImageCreate 的输出。

关于cocoa - 解码 CGCreateImage 中忽略的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5841958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com