当我使用CGContextSetFillColorWithColor
和CGContextFillRect
填充CGBitmapContext中的rect时,最终颜色取决于rect的大小。
这是我的代码。我的问题是,如果我将size_w
更改为2或其他大小,则会导致意外的rgba数据。
int size_w=51;
GLubyte *const data=malloc(size_w*size_w*sizeof(GLubyte)*4);
CGContextRef context= CGBitmapContextCreate(data, size_w, size_w, 8, size_w*4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast|kCGBitmapByteOrder32Big);
CGContextSaveGState(context);
CGContextSetFillColorWithColor(context, [UIColor colorWithRed:1.0f green:0.0f blue:0.0f alpha:0.2f].CGColor);
CGContextFillRect(context, CGRectMake(0, 0, size_w, size_w));
CGContextRestoreGState(context);
CGImageRef cimage= CGBitmapContextCreateImage(context);
//print the rgba data
struct RGBA* tmp=(struct RGBA*)data;
for (int i=0; i<size_w*size_w; i++) {
struct RGBA pixel=tmp[i];
NSLog(@"r:%i,g:%i,b:%i,a:%i\n",pixel.R,pixel.G,pixel.B,pixel.A);
}
});
Struct RGBA
定义如下:
struct RGBA {
uint8_t R;
uint8_t G;
uint8_t B;
uint8_t A;
};