当前位置:编程学习 > wap >>

修改UIImage图片的颜色

大家好,这两天看iphone客户端的美图秀秀,我看他那个处理图片,可以把一张彩色的图片设置成黑白的,我今天查了很多资料,也尝试了做一下,但是都没有做出来那个,我想请问下各位大牛,有没有什么好的思路给我提供一下,谢谢.

 就是目前有一张图片,是彩色的,但是我想给他变成黑白的,我应该怎么处理.谢谢 --------------------编程问答-------------------- 其实网上有很多,到github.com搜

下面做到UIImage的Category里即可

运行
UIImage *image = ???
image = [image grayscale];
就变黑白了


-(UIImage*)grayscale
{
    /* const UInt8 luminance = (red * 0.2126) + (green * 0.7152) + (blue * 0.0722); // Good luminance value */
    /// Create a gray bitmap context
    const size_t width = self.size.width;
    const size_t height = self.size.height;
    
    CGRect imageRect = CGRectMake(0, 0, self.size.width, self.size.height);
    
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
    CGContextRef bmContext = CGBitmapContextCreate(NULL, width, height, 8/*Bits per component*/, width * 3, colorSpace, kCGImageAlphaNone);
    CGColorSpaceRelease(colorSpace);
    if (!bmContext)
        return nil;
    
    /// Image quality
    CGContextSetShouldAntialias(bmContext, false);
    CGContextSetInterpolationQuality(bmContext, kCGInterpolationHigh);
    
    /// Draw the image in the bitmap context
    CGContextDrawImage(bmContext, imageRect, self.CGImage);
    
    /// Create an image object from the context
    CGImageRef grayscaledImageRef = CGBitmapContextCreateImage(bmContext);
    UIImage *grayscaled = [UIImage imageWithCGImage:grayscaledImageRef
                                              scale:self.scale
                                        orientation:self.imageOrientation];
    
    /// Cleanup
    CGImageRelease(grayscaledImageRef);
    CGContextRelease(bmContext);
    
    return grayscaled;
}

--------------------编程问答-------------------- 楼上的代码没有试出效果。难道跟图片格式有关?
补充:移动开发 ,  iPhone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,