我正在尝试创建一个简单的UIImage,8x1,灰色色彩空间,没有alpha通道。我的代码:
- (UIImage *)createImage {
size_t w = 8;
size_t h = 1;
size_t size = w * h;
uint8_t * buf = calloc(size, sizeof(uint8_t));
for(int x = 0; x < size; x++) {
buf[x] = (uint8_t) (x * 32);
}
CGColorSpaceRef space = CGColorSpaceCreateDeviceGray();
CGContextRef context = CGBitmapContextCreate(buf, w, h, 8, w * sizeof(uint8_t), space, kCGBitmapByteOrderDefault | kCGImageAlphaNone);
CGImageRef img = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(space);
UIImage * ret = [UIImage imageWithCGImage: img];
CGImageRelease(img);
free(buf);
return ret;
}
当我显示此图像时,它看起来像这样:
无论图像的大小如何,第(N-4)像素的颜色都被复制到像素N-3,N-2和N-1。 (最后一个应该是白色的)
当我添加alpha通道(每像素16位)或使用RGB或索引颜色模型时,没问题,但是使用此位图设置,我无法设置最后3个像素的颜色。有些幽灵正在弄乱我的像素。有任何想法吗? :)