iOS开发Quarz2D 九:图片加水印

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageV;

@end

@implementation ViewController
/**
 *    注意:1:位图也就是图片的上下文,必须手动去开启,手动去关闭,而view的图形上下文,在drawRect方法中系统已经自动生成,由系统自动去管理图形上下文。2:[image drawAtPoint:CGPointZero];drawAtPoint,图片有多大,就绘制多大,drawRect,外界的父控件有多大,图片就会填充整个父控件
 */
- (void)viewDidLoad {
    [super viewDidLoad];
    
    //0.加载图片
    UIImage *image = [UIImage imageNamed:@"阿狸头像"];
    //1.开启一个跟图片原始大小的上下文
    //opaque:不透明度,参数传0,默认根据屏幕的分辨率去设置具体的数值
    UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
    //2.把图片绘制到上下文当中
    [image drawAtPoint:CGPointZero];
    //3.把文字绘制到上下文当中
    NSString *str = @"小码哥";
    [str drawAtPoint:CGPointMake(10, 20) withAttributes:nil];
    //4.从上下文当中生成一张图片.(把上下文当中绘制的所有内容,生成一张图片)
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    //5.关闭上下文.
    UIGraphicsEndImageContext();
    
    self.imageV.image = newImage;
    

}

@end

 给图片水印的目的:

告诉别人图片的来源.

防止别人盗用图片.打广告.

 

添加水印它最终是生成了一个新的图片.

生成图片要用到了图片上下文.不需要再去自定义View,

之前一直在自定义View,是因为要拿跟View相关联的上下文.

跟View相关联的上下文是系统自动帮我们创建的,所以不需要我们自己手动创建,

但是图片上下文需要我们自己去手动创建.还需要我们自己手动去关闭.

 

实现水印效果的思路:

开启一个和原始图片一样的图片上下文.

把原始图片先绘制到图片上下文.

再把要添加的水印(文字,logo)等绘制到图片上下文.

最后从上下文中取出一张图片.

关闭图片上下文.

 

1.如何开启一个图片上下文?

    size:开启多大的上文

    opaque:不透明度

    scale:缩放上下文.

    UIGraphicsBeginImageContextWithOptions(image.size, YES, 0);

     

     2.如何从图片上下文当中生成一张图片?

     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

     

     3.如何关闭上下文?

     UIGraphicsEndImageContext();

posted on 2016-08-30 14:45  Hello_IOS  阅读(303)  评论(0编辑  收藏  举报

导航