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; 
              }

    推推族,免费得门票,游景区:www.tuituizu.com

    结伴旅游,一个免费的交友网站:www.jieberu.com

  • 相关阅读:
    交互原型设计软件axure rp学习之路(一)
    charles关于手机APP抓包
    Charles常见问题汇总
    转: Charles 从入门到精通
    深度理解《正则表达式》
    monkey无规则压力测试
    go语言几个最快最好运用最广的web框架比较
    html 生成印章
    通过URI协议实现浏览器调用手机app
    基于GitLab+Jenkins的DevOps赋能实践
  • 原文地址:https://www.cnblogs.com/rabbit-bunny/p/4223167.html
Copyright © 2011-2022 走看看