zoukankan      html  css  js  c++  java
  • Android 图片添加水印图片或者文字

    给图片添加水印的基本思路都是载入原图,添加文字或者载入水印图片,保存图片这三个部分

    添加水印图片:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    private Bitmap createWaterMaskImage(Context gContext, Bitmap src, Bitmap watermark)
        {
     
            String tag = "createBitmap";
            Log.d(tag, "create a new bitmap");
            if (src == null)
            {
                return null;
            }      
            int w = src.getWidth();
            int h = src.getHeight();
            int ww = watermark.getWidth();
            int wh = watermark.getHeight();
            // create the new blank bitmap
            Bitmap newb = Bitmap.createBitmap(w, h, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
            Canvas cv = new Canvas(newb);
            // draw src into
            cv.drawBitmap(src, 0, 0, null);// 在 0,0坐标开始画入src
            // draw watermark into
            cv.drawBitmap(watermark, 20, 20, null);// 在src的右下角画入水印
            // save all clip
            cv.save(Canvas.ALL_SAVE_FLAG);// 保存
            // store
            cv.restore();// 存储
            return newb;
        }

    添加文字

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    public static Bitmap scaleWithWH(Bitmap src, double w, double h) {
              if (w == 0 || h == 0 || src == null) {
                  return src;
              } else {
                  // 记录src的宽高
                  int width = src.getWidth();
                  int height = src.getHeight();
                  // 创建一个matrix容器
                  Matrix matrix = new Matrix();
                  // 计算缩放比例
                  float scaleWidth = (float) (w / width);
                  float scaleHeight = (float) (h / height);
                  // 开始缩放
                  matrix.postScale(scaleWidth, scaleHeight);
                  // 创建缩放后的图片
                  return Bitmap.createBitmap(src, 0, 0, width, height, matrix, true);
              }
          }
       
      public Bitmap drawTextToBitmap(Context gContext,  
                int gResId,  
                String gText) { 
                Resources resources = gContext.getResources(); 
                float scale = resources.getDisplayMetrics().density; 
                Bitmap bitmap =  
                    BitmapFactory.decodeResource(resources, gResId); 
                  
                bitmap = scaleWithWH(bitmap, 300*scale, 300*scale);
                 
                android.graphics.Bitmap.Config bitmapConfig = 
                    bitmap.getConfig(); 
                 
                 
                 
                // set default bitmap config if none 
                if(bitmapConfig == null) { 
                  bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888; 
                
                // resource bitmaps are imutable,  
                // so we need to convert it to mutable one 
                bitmap = bitmap.copy(bitmapConfig, true); 
                  
                Canvas canvas = new Canvas(bitmap); 
                // new antialised Paint 
                Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
                // text color - #3D3D3D 
                paint.setColor(Color.RED);   
                paint.setTextSize((int) (18 * scale));             
                 paint.setDither(true); //获取跟清晰的图像采样 
                 paint.setFilterBitmap(true);//过滤一些 
                Rect bounds = new Rect(); 
                paint.getTextBounds(gText, 0, gText.length(), bounds);             
                int x = 30
                int y = 30;             
                canvas.drawText(gText, x * scale, y * scale, paint);                
                return bitmap; 
              }
  • 相关阅读:
    vue app项目 第一天 基本架构和路由配置
    uni-app真机调试报错request:fail abort解决方法
    C#中的虚函数virtual
    ASP.NET Core中返回 json 数据首字母大小写问题
    ASP.NET Core中使用Cache缓存
    ASP.NET Core WebApi使用ActionFilterAttribute过滤器
    ASP.NET Core WebApi使用JWT认证
    微信小程序自动识别收货地址
    开发常用网站
    微信小程序自定义导航栏组件
  • 原文地址:https://www.cnblogs.com/zmc/p/5629001.html
Copyright © 2011-2022 走看看