如何根据RGB值生成UIImage,暂时用不到这些,记录一下。

http://www.cocoachina.com/bbs/read.php?tid-60270.html
http://stackoverflow.com/questions/845278/overlaying-a-uiimage-with-a-color 
如何根据RGB值生成UIImage,暂时用不到这些,记录一下。


1  先定义UIColor *color = [[UIColor alloc] initWithRed:xxx/255.0f green:xxx/255.0f blue:xxx/255.0f alpha:1.0];   //xxx为RGB的值


2  然后[view setBackgroundColor:color];


3  截图 
            //获取图像
            [刚才的的view.layer renderInContext:UIGraphicsGetCurrentContext()];
            UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();
存image就是你要的 了  


- (CGContextRef) createARGBBitmapContextFromImage:(CGImageRef) inImage {


    CGContextRef    context = NULL;
    CGColorSpaceRef colorSpace;
    void *          bitmapData;
    int             bitmapByteCount;
    int             bitmapBytesPerRow;


    // Get image width, height. We'll use the entire image.
    size_t pixelsWide = CGImageGetWidth(inImage);
    size_t pixelsHigh = CGImageGetHeight(inImage);


    // Declare the number of bytes per row. Each pixel in the bitmap in this
    // example is represented by 4 bytes; 8 bits each of red, green, blue, and
    // alpha.
    bitmapBytesPerRow   = (pixelsWide * 4);
    bitmapByteCount     = (bitmapBytesPerRow * pixelsHigh);


    // Use the generic RGB color space.
    colorSpace = CGColorSpaceCreateDeviceRGB();


    if (colorSpace == NULL)
    {
        fprintf(stderr, "Error allocating color space\n");
        return NULL;
    }


    // Allocate memory for image data. This is the destination in memory
    // where any drawing to the bitmap context will be rendered.
    bitmapData = malloc( bitmapByteCount );
    if (bitmapData == NULL)
    {
        fprintf (stderr, "Memory not allocated!");
        CGColorSpaceRelease( colorSpace );
        return NULL;
    }


    // Create the bitmap context. We want pre-multiplied ARGB, 8-bits
    // per component. Regardless of what the source image format is
    // (CMYK, Grayscale, and so on) it will be converted over to the format
    // specified here by CGBitmapContextCreate.
    context = CGBitmapContextCreate (bitmapData,
                                                                     pixelsWide,
                                                                     pixelsHigh,
                                                                     8,      // bits per component
                                                                     bitmapBytesPerRow,
                                                                     colorSpace,
                                                                     kCGImageAlphaPremultipliedFirst);
    if (context == NULL)
    {
        free (bitmapData);
        fprintf (stderr, "Context not created!");
    }


    // Make sure and release colorspace before returning
    CGColorSpaceRelease( colorSpace );


    return context;



然后:
- (id)initWithCGImage:(CGImageRef)imageRef;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值