您的位置:首页 > 其它

图片任意位置添加水印

2014-07-04 10:28 239 查看
昨天学习了一下如何为一张图片添加水印。原理相当简单

首先如果我们想要在图片上随意的位置加水印,那么。水印应该是可以随手指移动而移动的,如下直接上代码:

#import "MoveAbleImageView.h"

@implementation MoveAbleImageView

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesEnded:touches withEvent:event];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesMoved:touches withEvent:event];

float dX = [[touches anyObject] locationInView:self].x - [[touches anyObject] previousLocationInView:self].x;
float dY = [[touches anyObject] locationInView:self].y - [[touches anyObject] previousLocationInView:self].y;
//CGAffineTransformTranslate 是以transform为起点
self.transform = CGAffineTransformTranslate(self.transform, dX, dY);
}


注意!MoveAbleImageView 是继承于 UIImageView ,这个看个人需求都可以。 而且 MoveAbleImageView的 userInteractionEnabled属性要为YES,这样控件就可以跟随你手指移动而移动了。

接下来就要做合成图片了。我的想法有两种。一种是图片合成。别一种就是直接截图了。下面看代码

第一种:合成

/**
加半透明水印
@param useImage 需要加水印的图片
@param addImage1 水印
@returns 加好水印的图片
*/
- (UIImage *)addImage:(UIImage *)useImage addMsakImage:(UIImage *)maskImage msakRect:(CGRect)rect
{
UIGraphicsBeginImageContext(useImage.size);
[useImage drawInRect:CGRectMake(0, 0, useImage.size.width, useImage.size.height)];

//四个参数为水印图片的位置
[maskImage drawInRect:rect];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
}
maskImage就是水印图。rect为水印图位置

第二种:截屏

-(UIImage *)saveImage:(UIView *)view {
CGRect mainRect = [[UIScreen mainScreen] bounds];

UIGraphicsBeginImageContext(CGSizeMake(320, 200));
CGContextRef context = UIGraphicsGetCurrentContext();
//    [[UIColor blackColor] set];

CGContextFillRect(context, mainRect);
[view.layer renderInContext:context];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;
}


这样基本就可以做成加水印的效果了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐