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

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

.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值