All what I want to do is to check a specific pixel's RGB value and so the same to the pixel next to it, and set the RGB value for the first pixel to the a range between two pixel's RGB values
here's the code
int width = img.size.width;
int height = img.size.height;
// the pixels will be painted to this array
uint32_t *pixels = (uint32_t *) malloc(width * height * sizeof(uint32_t));
// clear the pixels so any transparency is preserved
memset(pixels, 0, width * height * sizeof(uint32_t));
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
// create a context with RGBA pixels
CGContextRef context = CGBitmapContextCreate(pixels, width, height, 8, width * sizeof(uint32_t), colorSpace,
kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedLast);
// paint the bitmap to our context which will fill in the pixels array
CGContextDrawImage(context, CGRectMake(0, 0, width, height), [img CGImage]);
//allocate pixels array
for(int y = 0; y < height; y++) {
for(int x = 0; x < width; x++) {
uint8_t *rgbaPixel1 = (uint8_t *) &pixels[y * width + x];
uint8_t *rgbaPixel2 = (uint8_t *) &pixels[y * width + x + 1];
//uint32_t color = r * rgbaPixel[RED] + g * rgbaPixel[GREEN] + b * rgbaPixel[BLUE];
// set the pixels to the color
rgbaPixel1[0] = (rgbaPixel1[0] + rgbaPixel2[0] / 2);
rgbaPixel1[1] = (rgbaPixel1[1] + rgbaPixel2[1] / 2);
rgbaPixel1[2] = (rgbaPixel1[2] + rgbaPixel2[2] / 2);
rgbaPixel1[3] = 255;
}
}
but all what I get is some funny results !
any help ? Thanks :)
I used the following code to add 2 thin red lines at right and left of an image. That worked with iOS7
-(UIImage*)ModifyImage:(UIImage*) img
{
UIGraphicsBeginImageContext(img.size);
[img drawInRect:CGRectMake(0,0,img.size.width,img.size.height) blendMode:kCGBlendModeSourceOut alpha:1.0f];
CGContextRef ctx = UIGraphicsGetCurrentContext();
int w =img.size.width;
int cw,ch;
cw = img.size.width / 35;
ch = img.size.height / 35;
unsigned char* data = CGBitmapContextGetData (ctx);
for(int y = 0 ; y < img.size.height ; y++)
{
for(int x = 0 ; x < img.size.width ; x++)
{
//int offset = 4*((w * y) + x);
int offset = (CGBitmapContextGetBytesPerRow(ctx)*y) + (4 * x);
int blue = data[offset];
int green = data[offset+1];
int red = data[offset+2];
//int alpha = data[offset+3];
if(x <= (cw * 2) || x >= (cw * 35))
{
data[offset] = 0;
data[offset+1] = 0;
data[offset+2] = 255;
data[offset+3] = 255;
}
}
}
UIImage *rtimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return rtimg;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.