Хорошо, мы получили UIImage в буфер rawBits (см. Ссылку в оригинальном вопросе), затем мы изменили данные в буфере по своему вкусу (т.е. установили все красные компоненты (каждый 4-й байт) в 0, в качестве теста), и теперь нужно получить новый UIImage, представляющий данные с твидами.
Я нашел ответ в Поваренная книга Эрики Судан для iPhone , глава 7 (изображения), пример 12 (растровые изображения). Соответствующий вызов был CGBitmapContextCreate (), и соответствующий код был:
+ (UIImage *) imageWithBits: (unsigned char *) bits withSize: (CGSize)
size
{
// Create a color space
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
if (colorSpace == NULL)
{
fprintf(stderr, "Error allocating color space\n");
free(bits);
return nil;
}
CGContextRef context = CGBitmapContextCreate (bits, size.width,
size.height, 8, size.width * 4, colorSpace,
kCGImageAlphaPremultipliedFirst);
if (context == NULL)
{
fprintf (stderr, "Error: Context not created!");
free (bits);
CGColorSpaceRelease(colorSpace );
return nil;
}
CGColorSpaceRelease(colorSpace );
CGImageRef ref = CGBitmapContextCreateImage(context);
free(CGBitmapContextGetData(context));
CGContextRelease(context);
UIImage *img = [UIImage imageWithCGImage:ref];
CFRelease(ref);
return img;
}
Надеюсь, что это будет полезно для будущих спеллеров сайта!