0
나는 UIImagePickerController
클래스를 사용하고 있습니다. 나는 버튼을 가지고 있는데, 그 버튼을 클릭하면, 나는 이미지를 밝게하고 싶다. 온라인으로 검색했지만 검색시 찾은 코드가 작동하지 않습니다. 여기 uiimagepickercontroller에서 캡처 한 uiimage로 밝기를 설정하는 방법
- (UIImage *) brightness:(UIImage *)image
{
int level= 200;//put here an int value that go from -255 to 255;
CGImageRef inImage = image.CGImage; //Input image cgi
CGContextRef ctx;
CFDataRef m_DataRef;
m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));
UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);
int length = CFDataGetLength(m_DataRef);
CGImageGetBitsPerComponent(inImage), CGImageGetBitsPerPixel(inImage),CGImageGetBytesPerRow(inImage);
for (int index = 0; index < length; index += 4)
{
Byte tempR = m_PixelBuf[index + 1];
Byte tempG = m_PixelBuf[index + 2];
Byte tempB = m_PixelBuf[index + 3];
int outputRed = level + tempR;
int outputGreen = level + tempG;
int outputBlue = level + 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;
m_PixelBuf[index + 1] = outputRed;
m_PixelBuf[index + 2] = outputGreen;
m_PixelBuf[index + 3] = outputBlue;
}
ctx = CGBitmapContextCreate(m_PixelBuf,
CGImageGetWidth(inImage),
CGImageGetHeight(inImage),
8,
CGImageGetBytesPerRow(inImage),
CGImageGetColorSpace(inImage),
kCGImageAlphaPremultipliedFirst);
CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
UIImage* rawImage = [UIImage imageWithCGImage:imageRef];
CGContextRelease(ctx);
CGImageRelease(imageRef);
CFRelease(m_DataRef);
return rawImage;
}
이미지는 원본 이미지의 밝기에 여전히, 그 변화되지 않는다.
이 방법으로 수행해야 할 작업을 알려주십시오. [self drawInRect : imageRect]; –
코드를'[image drawInRect : imageRect];'로 변경했습니다. 그것은 작동하지 않아야합니다. – onegray