利用category,给UIImage添加水印功能(从李老师哪里学到的)代码如下:
UIImage+xc.h 中:
#import <UIKit/UIKit.h>
@interface UIImage (xc)
+(instancetype)waterImageWithBg:(NSString*)bg logo:(NSString*)logo;
@end
UIImage+xc.m 中:
#import "UIImage+xc.h"
@implementation UIImage (xc)
+(instancetype)waterImageWithBg:(NSString*)bg logo:(NSString*)logo
{
UIImage* bgimg = [UIImage imageNamed:bg];
//创建基于位图的上下文
UIGraphicsBeginImageContextWithOptions(bgimg.size, YES, 0.0);
//画背景
[bgimg drawInRect:CGRectMake(0, 0, bgimg.size.width, bgimg.size.height)];
//右下角水印
UIImage* lg = [UIImage imageNamed:logo];
CGFloat scale = 0.5;
CGFloat margin = 5;
CGFloat lgW = lg.size.width * scale;
CGFloat lgH = lg.size.height * scale;
CGFloat lgX = bgimg.size.width - lgW - margin;
CGFloat lgY = bgimg.size.height - lgH - margin;
[lg drawInRect:CGRectMake(lgX, lgY, lgW, lgH)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
@end
控制器里就很方便了:
#import "ViewController.h"
#import "UIImage+xc.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIImage* img = [UIImage waterImageWithBg:@"001.jpg" logo:@"log.jpg"];
UIImageView* imgView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 300 , 200)];
imgView.image = img;
[self.view addSubview:imgView];
NSData * data = UIImagePNGRepresentation(img);
NSString* path = [[NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingString:@"water.png"];
[data writeToFile:path atomically:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end