обрабатывать яркость изображения с помощью uislider в iPhone - PullRequest
0 голосов
/ 17 января 2012

Я реализовал изменение яркости изображения с помощью uislider в iPhone без использования openGlImageProcessing. Я хочу изменить яркость определенной области изображения, а не всего изображения, яркость должна быть видна только определенной области изображения, например, центральная область изображения должна быть яркой, или яркость определенного цвета всего изображения. Как мы можем изменить яркость определенной части изображения. Пожалуйста, помогите мне решить проблему, код

CGImageRef imageRef = imageView.image.CGImage;
CFDataRef ref = CGDataProviderCopyData(CGImageGetDataProvider(imageRef)); 
UInt8 * buf = (UInt8 *) CFDataGetBytePtr(ref); 
int length = CFDataGetLength(ref);

NSLog(@"%i",val);
float value = val/100;
for(int i=0; i<length; i+=3)
{
    Byte tempR = buf[i + 1];
    Byte tempG = buf[i + 2];
    Byte tempB = buf[i + 3];

    int outputRed = value + tempR;
    int outputGreen = value + tempG;
    int outputBlue = value + tempB;

    if (outputRed>255) outputRed=255;
    if (outputGreen>255) outputGreen=255;
    if (outputBlue>255) outputBlue=255;

    if (outputRed<0) outputRed=0;
    if (outputGreen<0) outputGreen=0;
    if (outputBlue<0) outputBlue=0;


    buf[i + 1] = outputRed; 
    buf[i + 2] = outputGreen; 
    buf[i + 3] = outputBlue;


}

size_t width = CGImageGetWidth(imageRef);
size_t height = CGImageGetHeight(imageRef);
size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef);
size_t bytesPerRow = CGImageGetBytesPerRow(imageRef);
CGColorSpaceRef colorSpace = CGImageGetColorSpace(imageRef);


CGContextRef ctx = CGBitmapContextCreate(buf, width, height, bitsPerComponent, bytesPerRow, colorSpace, CGImageGetAlphaInfo(imageRef));

CGImageRef img = CGBitmapContextCreateImage(ctx);
if (value == 0) {
    imageView.image = image;
}
else
{
    [imageView setImage:[UIImage imageWithCGImage:img]];
}

CFRelease(ref);
CGContextRelease(ctx);
CGImageRelease(img);    

1 Ответ

0 голосов
/ 18 января 2012

После долгих поисков я получил ответ как

//origional image
 image = [UIImage imageNamed:@"images2.jpg"];
 imageView = [[UIImageView alloc] initWithImage:image];

 CGSize size = [image size];

 [imageView setFrame:CGRectMake(0, 0, size.width, size.height)];
 [[self view] addSubview:imageView];
 [imageView release];   

 //image to be brightnessed
 CGRect rect = CGRectMake([image size].width / 6, [image size].height / 6 , 
                         ([image size].width / 2), ([image size].height / 2));

 CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
 UIImage *img = [UIImage imageWithCGImage:imageRef]; 

 imageView = [[UIImageView alloc] initWithImage:img];
 [imageView setFrame:CGRectMake([image size].width / 6, [image size].height / 6, ([image  size].width / 2), ([image size].height / 2))];
 [self.view addSubview:imageView];
 [imageView release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...