IOS 绘制图片水印(封装)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // -1.加载图片
//    UIImage *image = [UIImage imageNamed:@"me"];
    
    // 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];
}

 

封装:绘制图片水印

UIImage (NJ).h /.m

@interface UIImage (NJ)

/**
 *  生成水印
 *
 *  @param bgName  背景图片
 *  @param logNmae 水印图片
 *
 *  @return 生成好的图片(带水印的图片)
 */
+ (instancetype)imageWithBackgroundImageName:(NSString *)bgName log:(NSString *)logNmae;


@end
View Code
@implementation UIImage (NJ)


+ (instancetype)imageWithBackgroundImageName:(NSString *)bgName log:(NSString *)logNmae
{
    // 0. 加载背景图片
    UIImage *image = [UIImage imageNamed:bgName];
    
    // 1.创建bitmap上下文
    // 执行完这一行在内存中就相遇创建了一个UIImage
    UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
    
    // 2.绘图图片
    // 绘制背景图片
    [image drawAtPoint:CGPointMake(0, 0)];
    
    // 绘制水印'
    
     UIImage *logImage = [UIImage imageNamed:logNmae];
     
     CGFloat margin = 10;
     CGFloat logY = margin;
     CGFloat logX = image.size.width - margin - logImage.size.width;
     [logImage drawAtPoint:CGPointMake(logX, logY)];
    
//    NSString *str = @"黑马程序员";
//    [str drawAtPoint:CGPointMake(150, 50) withAttributes:nil];
    
    // 3.获得图片
    UIImage *newImage =  UIGraphicsGetImageFromCurrentImageContext();
    
    return newImage;
}
View Code

调用

- (void)viewDidLoad
{
    [super viewDidLoad];

    // 1.调用分类方法生成水印图片
    UIImage *newImage =  [UIImage imageWithBackgroundImageName:@"psb" log:@"logo1"];
    
    // 2.将图片写到文件中
    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"aaa.png"];
    NSLog(@"%@", path);
    
    NSData *data = UIImagePNGRepresentation(newImage);
    [data writeToFile:path atomically:YES];
    
    [self test];

}

 

posted on 2017-03-21 22:24  守望星空  阅读(299)  评论(0编辑  收藏  举报

导航