То, что вы просите, является одним из этих двух методов:
NSBitmapRep setColor: atX: y: Изменяет цвет пикселя в указанных координатах.
NSBitmapRep setPixel: atX: y: Устанавливает пиксель приемника в указанных координатах в указанные необработанные значения пикселей.
Обратите внимание, что они недоступны на iOS. В iOS кажется, что способ сделать это состоит в том, чтобы создать необработанный буфер данных пикселей для данного цветового пространства (вероятно, RGB), заполнить его цветными данными (для этого нужно написать небольшой метод setPixel) и затем вызвать CGImageCreate () вот так:
//Create a raw buffer to hold pixel data which we will fill algorithmically
NSInteger width = theWidthYouWant;
NSInteger height = theHeightYouWant;
NSInteger dataLength = width * height * 4;
UInt8 *data = (UInt8*)malloc(dataLength * sizeof(UInt8));
//Fill pixel buffer with color data
for (int j=0; j<height; j++) {
for (int i=0; i<width; i++) {
//Here I'm just filling every pixel with red
float red = 1.0f;
float green = 0.0f;
float blue = 0.0f;
float alpha = 1.0f;
int index = 4*(i+j*width);
data[index] =255*red;
data[++index]=255*green;
data[++index]=255*blue;
data[++index]=255*alpha;
}
}
// Create a CGImage with the pixel data
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, data, dataLength, NULL);
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGImageRef image = CGImageCreate(width, height, 8, 32, width * 4, colorspace, kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast,
provider, NULL, true, kCGRenderingIntentDefault);
//Clean up
CGColorSpaceRelease(colorspace);
CGDataProviderRelease(provider);
// Don't forget to free(data) when you are done with the CGImage
Наконец, вы, возможно, захотите манипулировать пикселями в изображении, которое вы уже загрузили в CGImage. Для этого есть пример кода в Технических вопросах и ответах Apple под названием QA1509 Получение данных пикселей из объекта CGImage .