• ios 将彩色照片转化成黑白等几种类型


    -(UIImage *)changeColoursImageTograyScaleImage:(UIImage *)anImage type:(int)type

    {

        CGImageRef imageRef = anImage.CGImage;

        

        size_t width                   = CGImageGetWidth(imageRef);

        size_t height                  = CGImageGetHeight(imageRef);

        size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef);

        size_t bitsPerPixel           = CGImageGetBitsPerPixel(imageRef);

        size_t bytesPerRow         = CGImageGetBytesPerRow(imageRef);

        

        CGColorSpaceRef colorSpace = CGImageGetColorSpace(imageRef);

        CGBitmapInfo bitMapInfo      = CGImageGetBitmapInfo(imageRef);

        

        bool shouldInterPolate               = CGImageGetShouldInterpolate(imageRef);

        CGColorRenderingIntent intent   = CGImageGetRenderingIntent(imageRef);

        CGDataProviderRef dataProvider = CGImageGetDataProvider(imageRef);

        CFDataRef data                         = CGDataProviderCopyData(dataProvider);

        UInt8 *buffer                            = (UInt8  *)CFDataGetBytePtr(data);

        

        NSInteger x,y;

        for (y = 0; y < height; y++) {

            for (x = 0; x < width; x++) {

                UInt8 *tmp;

                tmp = buffer + y * bytesPerRow + x * 4;

                

                UInt8 red,green,blue;

                red     = *(tmp + 0);

                green = *(tmp + 1);

                blue   = *(tmp + 2);

                

                UInt8 brightness;

                switch (type) {

                    case 0:

                        brightness = (77 * red + 28 * green + 151 * blue) / 256;

                        *(tmp + 0) = brightness;

                        *(tmp + 1) = brightness;

                        *(tmp + 1) = brightness;

                        break;

                    case 1:

                        brightness = (77 * red + 28 * green + 151 * blue) / 256;

                        *(tmp + 0) = red;

                        *(tmp + 1) = green * 0.7;

                        *(tmp + 1) = blue *0.4;

                        break;

                    case 2:

                        brightness = (77 * red + 28 * green + 151 * blue) / 256;

                        *(tmp + 0) = 255 - red;

                        *(tmp + 1) = 255 - green;

                        *(tmp + 1) = 255 - blue;

                        break;

                        

                    default:

                        *(tmp + 0) = red;

                        *(tmp + 1) = green;

                        *(tmp + 2) = blue;

                        break;

                }

                

            }

        }

        CFDataRef effectedData = CFDataCreate(NULL, buffer, CFDataGetLength(data));

        CGDataProviderRef effectedDataProvider = CGDataProviderCreateWithCFData(effectedData);

        CGImageRef effectedCGImage = CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpace, bitMapInfo, effectedDataProvider, NULL, shouldInterPolate, intent);

        UIImage *effectedImage = [[UIImage alloc]initWithCGImage:effectedCGImage];

        CGImageRelease(effectedCGImage);

        CFRelease(effectedDataProvider);

        CFRelease(effectedData);

        CFRelease(data);

        

        

        return effectedImage;

    }

    效果图:

    握不住的沙,干脆扬了它。
  • 相关阅读:
    LTS版本的解析
    symfony中twig的模板过滤器
    symfony中twig的模板载入
    symfony中twig的流程控制if,for用法
    symfony中twig的模板变量与注释
    使用Symfony 2在三小时内开发一个寻人平台
    symfony在模板中生成url
    模板中引入其他的模板
    劳务派遣有新规章,劳务工有保障了|中山劳务派
    Symfony启动过程详细学习
  • 原文地址:https://www.cnblogs.com/zj901203/p/4238555.html
Copyright © 2020-2023  润新知