• 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();

  • 相关阅读:
    不一样的图片加载方式
    赢 1000 元现金红包!助力奥运,猜金银牌数赢现金
    接入 SDK 结果翻车了?了解 SDK 的那些事
    关于 IPv6 国家有大动作啦!快来瞅瞅行动计划都说了什么~
    MySQL 那些常见的错误设计规范
    webpack 从 0 到 1 构建 vue
    PHP 网络通信底层原理分析
    内部方案汇总
    taro+vue3 引入 taro-ui-vue3
    springboot+tomcat+vue+nginx 前后端分离配置
  • 原文地址:https://www.cnblogs.com/cqb-learner/p/5821977.html
Copyright © 2020-2023  润新知