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

来源:互联网 发布:淘宝女装批发店铺有吗 编辑:程序博客网 时间:2024/04/30 02:32

今天在做项目的时候有用到给用户上传的图片添加水印的功能,于是就封装了一个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"];

其实这个并不是很难很高深的应用,但在开发过程中我们要善于去发现,一些常用的方法和属性,我们应当将它封装起来,提高我们代码运行的效率。

0 0
原创粉丝点击