您的位置:首页 > 其它

40.利用bitmap上下文生成图片 生成水印

2015-06-01 14:18 239 查看
1.bitmap上下文:生成图片的上下文,不再是在layer上的上下文:
- (void)viewDidLoad
{
[super viewDidLoad];

// 0.创建一个bitmap的上文
//CGBitmapContextCreate
/*
size :指定将来创建出来的bitmap的大小
opaque : YES:背景不透明  NO:背景透明
scale: 缩放比例
创建出来的bitmap就对应一个UIImage
*/
UIGraphicsBeginImageContextWithOptions(CGSizeMake(200, 200), NO , 0);

// 1.获取bitmap上下文,刚刚创建的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();

// 2.绘图
CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 100, 100));

// 3.渲染
CGContextStrokePath(ctx);

// 4.获取生成的图片
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

// 5.显示生成的图片到imageview
self.iv.image = image;

// 6.保存绘制好的图片到文件中
// 先将图片转换为二进制数据, 然后再将图片写到文件中
//    UIImageJPEGRepresentation(image, 1)
NSData *data = UIImagePNGRepresentation(image);

[data writeToFile:@"/Users/apple/Desktop/abc.png" atomically:YES];
}


- (void)test
{
// 0. 加载背景图片
UIImage *image = [UIImage imageNamed:@"psb"];

// 1.创建bitmap上下文
// 执行完这一行在内存中就相遇创建了一个UIImage
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);

// 2.绘图图片
// 2.1绘制背景图片
[image drawAtPoint:CGPointMake(0, 0)];

// 2.2绘制水印

UIImage *logImage = [UIImage imageNamed:@"logo1"];

CGFloat margin = 10;
CGFloat logY = margin;
CGFloat logX = image.size.width - margin - logImage.size.width;
[logImage drawAtPoint:CGPointMake(logX, logY)];

// 2.3绘制文字水印
NSString *str = @"黑马程序员";
[str drawAtPoint:CGPointMake(150, 50) withAttributes:nil];

// 3.获得bitmap上下文中绘制号的图片
UIImage *newImage =  UIGraphicsGetImageFromCurrentImageContext();

// 4.将图片写到文件中
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"aaa.png"];
NSLog(@"%@", path);

NSData *data = UIImagePNGRepresentation(newImage);
[data writeToFile:path atomically:YES];
}

.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: