zoukankan      html  css  js  c++  java
  • Quartz2D 给图片打水印

    1. 水印:在图片上加的防止他人盗图的半透明logo、文字、图标

      水印作用:告诉你这个图片从哪来的

    2. 实现方式:利用Quartz2D,将水印(文字、LOGO)画到图片的右下角

        将代码封装成UIImage的分类方法,便于使用

     1 + (instancetype)waterImageWithBg:(NSString *)bg logo:(NSString *)logo {
     2     UIImage *oldImage = [UIImage imageNamed:bg];
     3     // 1.创建一个基于位图(bitmap)的上下文(开启一个基于位图的上下文)
     4     // size:新图片的尺寸
     5     // opaque:YES:不透明,NO:透明
     6     // 这行代码过后,相当于创建一张新的bitmap,也就是新的UIImage对象
     7     UIGraphicsBeginImageContextWithOptions(oldImage.size, NO, 0.0);
     8     // 2.画背景
     9     [oldImage drawInRect:CGRectMake(0, 0, oldImage.size.width, oldImage.size.height)];
    10     // 3.画水印
    11     UIImage *image = [UIImage imageNamed:logo];
    12 
    13     CGFloat scale = 0.5; // 按比例缩小图片
    14     CGFloat logoW = image.size.width * scale;
    15     CGFloat logoH = image.size.height * scale;
    16     CGFloat logoX = oldImage.size.width - logoW;
    17     CGFloat logoY = oldImage.size.height - logoH;
    18     [image drawInRect:CGRectMake(logoX, logoY, logoW, logoH)];
    19     // 4.从上下文中获取制作完毕的UIImage对象
    20     UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    21 
    22     // 5.结束上下文
    23     UIGraphicsEndImageContext();
    24     return newImage;
    25 }

    打水印实质上是合成图片,把雪花❄️印在图片上,效果图如下:

    4. 将生成的新图片写到沙盒中

        // 6.将image对象压缩成png格式的二进制数据
        NSData *data = UIImagePNGRepresentation(image);
        // 7.获得沙盒路径,写入文件
        NSString *documentPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"lufei.png"];
        [data writeToFile:documentPath atomically:YES];
  • 相关阅读:
    Flutter: The getter 'futureDynamicType' was called on null.
    Android混合Flutter
    js bese64转化为blob使用FormData上传
    Flutter FractionallySizedBox 设置维度比例 而不是固定的px
    Flutter 区分开发环境和生产环境
    windows 隐藏desktop.ini文件
    Js中的reduce,fold和unfold
    精读Hooks 取数-swr源码
    WebSocket 原理浅析与实现简单聊天
    TypeScript 2.0 标记联合类型
  • 原文地址:https://www.cnblogs.com/caofutao/p/4824639.html
Copyright © 2011-2022 走看看