如何根据RGB值生成UIImage,暂时用不到这些,记录一下。
2017-06-01 14:19
459 查看
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;
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;
相关文章推荐
- 如何让从数据库中查询出符合条件的记录,然后给每个记录自动加上序号,序号是根据符合条件的记录多少在随时变化.而且也会在以查询生成的报表中显示出来.谢谢
- 求助求助——请教各位高手,抽出一点宝贵的时间根据这个实例讲解一下应该如何分层呢?
- 记录的ID是自动生成好,还是人工赋值好?大家讨论一下。
- 网上找了个java随机生成密码的。。。发上来记录一下。
- 如何执行SQL脚本随机在用户表中生成N条记录
- 如何使用CommandArgument属性根据id删除记录
- 如何根据类的名字来生成对象
- visio 如何反向连接数据库生成er图( 即根据数据库自动生成ER图 )
- 如何用hibernate生成记录修改和建立的时间戳
- 如何根据cs类生成dll 方便以后调用
- 记录一下上回参考arch wiki 如何恢复Pacman的本地数据库
- 定义如何根据区域性设置 DateTime 值的格式并显示这些值。
- Oracle中如何根据一个字段查询是否有符合条件的记录
- 请教如何根据表名变量查询该表的记录数?
- 如何根据判断数据的结果,改变DataGridView中对应记录的背景颜色?
- 如何根据基本类型(值类型)动态生成对象
- 求助求助——请教各位高手,抽出一点宝贵的时间根据这个实例讲解一下应该如何分层呢?
- 收藏:如何根据当前MDB中的表生成对应的JET SQL DDL “CREATE TABLE”语句/脚本?
- 如何把数据库里的4000条记录的文章内容批量生成静态页html
- Code33 如何删除这些重复的行(不同时删除重复的记录)