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

解决方案 »

  1.   

    其实网上有很多,到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;
    }