iOS 图片加水印

为图片添加水印文字, 需要先获取图片的图形上下文. 将文字绘制到图形的上下文中, 再根据当前的图形上下文生成一张新的图片返回.

//0.加载图片
UIImage *image = [UIImage imageNamed:@"阿狸头像"];
//1.开启一个跟图片原始大小一样的上下文
//opaque: 不透明
/**
 *  开启一个图形上下文
 *
 *  @param size#>   开启的图形上下文的大小 description#>
 *  @param opaque#> 是否不透明 yes不透明 no透明 description#>
 *  @param scale#>  分辨率 如果是0则和屏幕分辨率一致 description#>
 *
 *  @return 生成的图片
 */
//UIGraphicsBeginImageContextWithOptions(<#CGSize size#>, <#BOOL opaque#>, <#CGFloat scale#>)
UIGraphicsBeginImageContextWithOptions(image.size, YES, 0);
//2.把图片绘制到上下文当中
[image drawAtPoint:CGPointZero];
//3.把文字绘制到上下文当中
NSString *str = @"pipi";
[str drawAtPoint:CGPointMake(10, 20) withAttributes:nil];
//4.从上下文当中生成一张图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
//5.关闭上下文
UIGraphicsEndImageContext();

self.imgV.image = newImage;

根据一个View生成图片

UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;

上下文的矩阵操作

//平移操作
CGContextTranslateCTM(ctx, 100, 100);
//旋转
CGContextRotateCTM(ctx, M_PI_4);
//缩放
CGContextScaleCTM(ctx, 1.5, 1.5);

擦除指定区域

CGContextClearRect(ctx, rect);

对上下文进行裁剪

    [clipPath addClip];

保存恢复/上下文状态 以栈的形式保存和恢复

CGContextSaveGState(ctx);
CGContextRestoreGState(ctx);

CADisplayLink

CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(changeY)];
//想要让CADisplayLink 让它工作, 必须得要把它添加到主运行循环当中,
//当每一次屏幕刷新的时候就会调用指定的方法(屏幕每一秒刷新60次)
[link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];

你可能感兴趣的:(iOS 图片加水印)