2010-08-23 25 views
2

我想创建一个应用程序,我想要做一些图像处理。所以我想知道是否有任何开源图像处理库可用?我也想创建一个这样的过滤器Glamour Filter任何有关这方面的帮助将非常感激。如果有人已经有一个源代码来创建棕褐色,黑白旋转缩放代码比请发送。由于图像处理iphone中的魅力滤镜

回答

-2

搜索OpenCV的

+0

OpenCV的是一个人脸检测库。这不是图像过滤器。我很喜欢图片过滤器库 – 2010-08-30 13:04:34

1

这里是黑白色&效果

- (UIImage*) createGrayCopy:(UIImage*) source { 

    int width = source.size.width; 
    int height = source.size.height; 

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); 

    CGContextRef context = CGBitmapContextCreate (nil,        width, 
               height, 
                8,  // bits per component 
                0, 
                colorSpace, 
                kCGImageAlphaNone); 

    CGColorSpaceRelease(colorSpace); 

    if (context == NULL) { 
     return nil; 
    } 

    CGContextDrawImage(context, 
         CGRectMake(0, 0, width, height), source.CGImage); 

    UIImage *grayImage = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)]; 
    CGContextRelease(context); 

    return grayImage; 
} 
+1

您发布的黑白代码实际上是灰色效果。我需要实际的空白和白色效果的代码。我已经发布了棕褐色滤镜的代码。 – 2010-11-18 04:43:12

6

的代码下面是棕褐色图像的代码

-(UIImage*)makeSepiaScale:(UIImage*)image 
{ 
    CGImageRef cgImage = [image CGImage]; 
    CGDataProviderRef provider = CGImageGetDataProvider(cgImage); 
    CFDataRef bitmapData = CGDataProviderCopyData(provider); 
    UInt8* data = (UInt8*)CFDataGetBytePtr(bitmapData); 

    int width = image.size.width; 
    int height = image.size.height; 
    NSInteger myDataLength = width * height * 4; 


    for (int i = 0; i < myDataLength; i+=4) 
    { 
     UInt8 r_pixel = data[i]; 
     UInt8 g_pixel = data[i+1]; 
     UInt8 b_pixel = data[i+2]; 

     int outputRed = (r_pixel * .393) + (g_pixel *.769) + (b_pixel * .189); 
     int outputGreen = (r_pixel * .349) + (g_pixel *.686) + (b_pixel * .168); 
     int outputBlue = (r_pixel * .272) + (g_pixel *.534) + (b_pixel * .131); 

     if(outputRed>255)outputRed=255; 
     if(outputGreen>255)outputGreen=255; 
     if(outputBlue>255)outputBlue=255; 


     data[i] = outputRed; 
     data[i+1] = outputGreen; 
     data[i+2] = outputBlue; 
    } 

    CGDataProviderRef provider2 = CGDataProviderCreateWithData(NULL, data, myDataLength, NULL); 
    int bitsPerComponent = 8; 
    int bitsPerPixel = 32; 
    int bytesPerRow = 4 * width; 
    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 
    CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; 
    CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; 
    CGImageRef imageRef = CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider2, NULL, NO, renderingIntent); 

    CGColorSpaceRelease(colorSpaceRef); // YOU CAN RELEASE THIS NOW 
    CGDataProviderRelease(provider2); // YOU CAN RELEASE THIS NOW 
    CFRelease(bitmapData); 

    UIImage *sepiaImage = [UIImage imageWithCGImage:imageRef]; 
    CGImageRelease(imageRef); // YOU CAN RELEASE THIS NOW 
    return sepiaImage; 
} 
+0

对于那些现在需要iOS 5和更高版本的用户,您可以直接应用内置的SepiaTone CIFilter来做同样的事情。 – 2013-11-05 16:26:52

+0

这只适用于.png图片 – Chandru 2014-02-18 14:13:40