【问题标题】:Image processing Glamour filter in iphoneiphone中的图像处理魅力滤镜
【发布时间】:2010-08-23 16:05:19
【问题描述】:

我想创建一个应用程序,我想在其中进行一些图像处理。所以我想知道是否有任何可用的开源图像处理库?我也想创建一个像Glamour Filter 这样的过滤器,对此的任何帮助将不胜感激。如果有人已经有创建棕褐色的源代码,请发送黑白旋转比例代码。谢谢

【问题讨论】:

    标签: iphone image-processing filter uiimage


    【解决方案1】:

    这是棕褐色图像的代码

    -(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;
    }
    

    【讨论】:

    • 对于那些现在正在寻找这个的人,iOS 5 及更高版本,您可以直接应用内置的 SepiaTone CIFilter 来做同样的事情。
    【解决方案2】:

    这是黑白效果的代码

     - (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;
    }
    

    【讨论】:

    • 您发布的黑白代码实际上是灰色效果。我需要实际的空白和白色效果的代码。我已经发布了棕褐色过滤器的代码。
    【解决方案3】:

    搜索 OpenCV

    【讨论】:

    • OpenCV 是一个人脸检测库。它不是图像过滤器。我正在寻找图像过滤器库
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多