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
@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; }
调用
- (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]; }