I want to programmatically change the contrast of a PNG image which has no background or I must say transparent background. The below image shows the example.enter image description here

I am able to change the contrast of with background image. But not able to change it in without background. I have tried this and this But both works in with background Image. Please help me to achieve this or suggest me any solution or tutorial link.

Thanks in advance

有帮助吗?

解决方案

CGImageRef inImage = self.CGImage;
CFDataRef m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));  
UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);  

int length = CFDataGetLength(m_DataRef);

for (int i=0; i<length; i+=4)
{
    filter(m_PixelBuf,i,context);
}  
CGContextRef ctx = CGBitmapContextCreate(m_PixelBuf,  
                                         CGImageGetWidth(inImage),  
                                         CGImageGetHeight(inImage),  
                                         CGImageGetBitsPerComponent(inImage),
                                         CGImageGetBytesPerRow(inImage),  
                                         CGImageGetColorSpace(inImage),
                                         CGImageGetBitmapInfo(inImage) );     

CGImageRef imageRef = CGBitmapContextCreateImage(ctx);  
CGContextRelease(ctx);
UIImage *finalImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CFRelease(m_DataRef);
return finalImage;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top