图片任意位置添加水印

昨天学习了一下如何为一张图片添加水印。原理相当简单

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

#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;
}

这样基本就可以做成加水印的效果了。





  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值