2012-01-17 6 views
0

openGlImageProcessingを使用せずにiPhoneのuisliderを使用して画像の明るさを変更することを実装しました。私は画像の特定の領域の明るさを変更したいだけで、画像の特定の領域のみ明るくする必要があります。たとえば、画像の中央領域が明るくなるか、画像全体から特定の色が明るくなるようにします。どのようにして画像の特定の部分の明るさを変更できますか?問題を解決するために私を助けてください、コードがあるiPhoneでuisliderを使用したプロセスイメージの明るさ

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);  
+0

として答えを得た検索の多くは..取得した後それは接触からですか? – vishy

+0

いいえ、明るくなるように中央の領域を明るくする必要があります。 –

+0

イメージバッファにオフセットを調整し、小さなセクションでループを実行することはできませんか? –

答えて

0

私はuが変更される画像の明るさのどの部分を知るようになってどのように行う

//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]; 
関連する問題