zoukankan      html  css  js  c++  java
  • 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();

  • 相关阅读:
    洛谷 P2700 逐个击破
    洛谷 P1503 鬼子进村
    洛谷 P1556 幸福的路
    洛谷 P1490 买蛋糕
    洛谷 P2507 [SCOI2008]配对
    code vs 3305 水果姐逛水果街Ⅱ
    通过idea远程调试
    【Cocos2d-x JavaScript Binding】
    ☀【SeaJS】SeaJS Grunt构建
    -_-#【Better Code】throttle / debounce
  • 原文地址:https://www.cnblogs.com/cqb-learner/p/5821977.html
Copyright © 2011-2022 走看看