• 09


    09 - 给图片添加水印.

     给图片水印的目的:
     告诉别人图片的来源.
     防止别人盗用图片.打广告.
    
     添加水印它最终是生成了一个新的图片.
     生成图片要用到了图片上下文.不需要再去自定义View,
     之前一直在自定义View,是因为要拿跟View相关联的上下文.
     跟View相关联的上下文是系统自动帮我们创建的,所以不需要我们自己手动创建,
     但是图片上下文需要我们自己去手动创建.还需要我们自己手动去关闭.
    
     实现水印效果的思路:
     开启一个和原始图片一样的图片上下文.
     把原始图片先绘制到图片上下文.
     再把要添加的水印(文字,logo)等绘制到图片上下文.
     最后从上下文中取出一张图片.
     关闭图片上下文.
    
     1.如何开启一个图片上下文?
         size:开启多大的上文
         opaque:不透明度
         scale:缩放上下文.
         UIGraphicsBeginImageContextWithOptions(image.size, YES, 0);
    
     2.如何从图片上下文当中生成一张图片?
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    
     3.如何关闭上下文?
        UIGraphicsEndImageContext();

    代码实现:

    #import "ViewController.h"
    
    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIImageView *imageView;
    
    @end
    
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        //加载图片
        UIImage *image = [UIImage imageNamed:@"girl"];
        
        //开启一个位图上下文.(需要手动来开启)
        UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
        //先把原始图片绘制到上下文当中.
        [image drawAtPoint:CGPointZero];
        
        //要添加的内容
        NSString *str =  @"@My godess";
        //设置属性
        NSMutableDictionary *dict = [NSMutableDictionary dictionary];
        dict[NSFontAttributeName] = [UIFont systemFontOfSize:100];
        dict[NSForegroundColorAttributeName] = [UIColor blueColor];
        [str drawAtPoint:CGPointMake(1300, 1000) withAttributes:dict];
        //从上下文当中生成一张图片
       UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        
        //关闭位图
        UIGraphicsEndImageContext();   
        //显示图片
        self.imageView.image = newImage;
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    @end

    实现效果:

  • 相关阅读:
    Android学习路径(两)项目文件本身使用场景和文件演示
    A左右ndroid正在使用Uri监视数据库中的更改
    离PACKET_INp获取信息acket data
    curl 命令
    POJ 3177 Redundant Paths POJ 3352 Road Construction(双连接)
    Linux 下一个 Mysql error 2002 错误解决
    图片打水印 缩放 和一个输入流的转换
    qt Qt5开发
    qt 关于Qt中MVC的介绍与使用
    qt mvc3
  • 原文地址:https://www.cnblogs.com/zhoudaquan/p/5034507.html
Copyright © 2020-2023  润新知