源码下载地址:http://download.youkuaiyun.com/detail/liu537192/8518797
效果图:
核心代码:
//
// JLViewController.m
// 02-图片水印
//
// Created by XinYou on 15-3-20.
// Copyright (c) 2015年 vxinyou. All rights reserved.
//
#import "JLViewController.h"
@interface JLViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@end
@implementation JLViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 原图
UIImage *backgoundImage = [UIImage imageNamed:@"pic"];
// 1,创建一个基于位图的上下文
// 参数一:新图片的尺寸
// 参数二:新图片是否透明。一般设置为NO:不透明
// 参数三:固定写法:0.0
UIGraphicsBeginImageContextWithOptions(backgoundImage.size, NO, 0.0);
// 2,把原图画到基于位图的上下文
[backgoundImage drawInRect:CGRectMake(0, 0, backgoundImage.size.width, backgoundImage.size.height)];
// 右下角的水印
UIImage *watermarkImage = [UIImage imageNamed:@"logo"];
// 水印的缩放比例
CGFloat scale = 0.2;
// 水印与原图右边和下边的距离
CGFloat margin = 5;
// 水印的宽
CGFloat watermarkW = watermarkImage.size.width * scale;
// 水印的高
CGFloat watermarkH = watermarkImage.size.height * scale;
// 水印的X坐标
CGFloat watermarkX = backgoundImage.size.width - watermarkW - margin;
// 水印的Y坐标
CGFloat watermarkY = backgoundImage.size.height - watermarkH - margin;
// 3,把水印画到基于位图的上下文
[watermarkImage drawInRect:CGRectMake(watermarkX, watermarkY, watermarkW, watermarkH)];
// 4,从位图上下文中获取制作完毕的UIImage
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// 5,结束位图上下文
UIGraphicsEndImageContext();
// 6,显示到UIImageView上面
self.iconView.image = newImage;
// 7,可以将图片压缩为PNG活着JPG格式的二进制数据,然后保存到文件中。
// 压缩成二进制数据
// NSData *data = UIImagePNGRepresentation(newImage);
// 保存到文件
// NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"new.png"];
// [data writeToFile:path atomically:YES];
}
@end