#import <UIKit/UIKit.h>
@interface UIImage (Lee)
// 打水印
+ (instancetype)waterImagewithBg:(NSString *)bg logo:(NSString *)logo;
@end
#import "LeeImageWater.h"
@implementation UIImage (Lee)
+ (instancetype)waterImagewithBg:(NSString *)bg logo:(NSString *)logo
{
// 获取网络图片
NSString *bgImgPath = @"http://ww3.sinaimg.cn/bmiddle/887790fagw1euicdrnhmkj20c4081dhd.jpg";
NSURL *bgUrl = [NSURL URLWithString:bgImgPath];
NSData *bgdata = [NSData dataWithContentsOfURL:bgUrl];
UIImage *bgImg = [UIImage imageWithData:bgdata];
NSString *waterImgPath = @"https://www.baidu.com/img/bdlogo.png";
NSURL *waterUrl = [NSURL URLWithString:waterImgPath];
NSData *waterData = [NSData dataWithContentsOfURL:waterUrl];
UIImage *waterImg = [UIImage imageWithData:waterData];
// UIImageView *waterImg = [[UIImageView alloc]initWithImage:[UIImage imageWithData:waterData]];
// waterImg.alpha = 0.5;
// 获取项目中图片
// UIImage *bgImg = [UIImage imageNamed:@"bg.png"];
UIGraphicsBeginImageContextWithOptions(bgImg.size, NO, 0.0);
// 画背景
[bgImg drawInRect:CGRectMake(0, 0, bgImg.size.width, bgImg.size.height)];
// 画水印
// UIImage *waterImg = [UIImage imageNamed:@"logo.png"];
CGFloat scale = 0.2; // 水印缩放比例
CGFloat margin = 5; // 水印间距
CGFloat waterW = waterImg.size.width * scale;
CGFloat waterH = waterImg.size.height * scale;
CGFloat waterX = bgImg.size.width - waterW - margin;
CGFloat waterY = bgImg.size.height - waterH - margin;
[waterImg drawInRect:CGRectMake(waterX, waterY, waterW, waterH) blendMode:kCGBlendModeColorBurn alpha:1];
// [waterImg drawInRect:CGRectMake(waterX, waterY, waterW, waterH)];
// 从上下文取得制作完毕的UIImage对象
UIImage *newImg = UIGraphicsGetImageFromCurrentImageContext();
// 结束上下文
UIGraphicsEndImageContext();
// 保存图片
NSData *newdata = UIImagePNGRepresentation(newImg);
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingString:@"newImg.png"];
[newdata writeToFile:path atomically:YES];
}
将实现代码写入一个类里面,网络方法更具实用性,且类方法方便调用。
然后可以在viewController.m里面调用
#import "ViewController.h"
#import "LeeImageWater.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imgView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIImage *newImage = [UIImage waterImagewithBg:@"scene" logo:@"logo"];
self.imgView.image = newImage;
}
@end