您的位置:首页 > 移动开发 > IOS开发

IOS绘制图片水印以及文字水印

2015-10-17 19:10 465 查看
今天在做项目的时候有用到给用户上传的图片添加水印的功能,于是就封装了一个UIImage的分类,直接用一行代码调用就可以给图片绘上水印了。

水印分为两种,一种是图片水印,另一种就是文字水印。首先让我们来看看如何绘制图片水印。

首先我们创建了一个分类:

既然是要调用,那肯定使用public属性的方法,在.h文件中申明方法

//图片水印
+(UIImage *)imageWithBackgroudImage:(NSString *)bkImagename andLogoImage:(NSString *)lgImagename;
然后实现它,大致的原理就是先绘制主图,填充整个图形上下文,然后再绘制Logo图片,然后通过图形上下文获取当前的图片,也就是两者合为一体的图片。代码如下:

+(UIImage *)imageWithBackgroudImage:(NSString *)bkImagename andLogoImage:(NSString *)lgImagename
{
//0.取出主图片
UIImage *mainImage = [UIImage imageNamed:bkImagename];
//1.取得图片上下文bitmap(三个参数分别为:大小,是否透明,缩放度)
UIGraphicsBeginImageContextWithOptions(mainImage.size, NO, 0);
//2.绘制主图
[mainImage drawAtPoint:CGPointMake(0, 0)];

//3.取出logo图片
UIImage *logoImage = [UIImage imageNamed:lgImagename];
//4.绘制logo图片
[logoImage drawAtPoint:CGPointMake(mainImage.size.width-logoImage.size.width-10, 10)];
//5.取出图形上下文中得图片
UIImage *finalimage = UIGraphicsGetImageFromCurrentImageContext();
//6.传回图片
return finalimage;
}


同理,添加文字LOGO也是一样,只不过需要用NSDictionary来保存字符串的一些属性,代码如下:
+(UIImage *)imageWithBackgroudImage:(NSString *)bkImagename andStringLogo:(NSString *)string
{
//0.取得主图片
UIImage *mainImage = [UIImage imageNamed:bkImagename];
//1.取出图形上下文
UIGraphicsBeginImageContextWithOptions(mainImage.size, NO, 0);
//2.绘制
[mainImage drawAtPoint:CGPointMake(0, 0)];
//3.设置字体
NSDictionary *dict = @{NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue-Bold" size:8.0f],NSForegroundColorAttributeName:[UIColor whiteColor]};
//4.绘制文字
[string drawAtPoint:CGPointMake(mainImage.size.width-50, 0) withAttributes:dict];
//5.取出图片
UIImage *finalimage = UIGraphicsGetImageFromCurrentImageContext();
//6.传回图片
return finalimage;

}


这样一来,我们就算封装好了这个方法。只需要在控制器里调用一句话就可以轻松给图片添加水印了。
//图片水印使用方法
UIImage *image = [UIImage imageWithBackgroudImage:@"psb" andLogoImage:@"logo1"];

其实这个并不是很难很高深的应用,但在开发过程中我们要善于去发现,一些常用的方法和属性,我们应当将它封装起来,提高我们代码运行的效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: