当前位置: 移动技术网 > 移动技术>移动开发>Android > Android添加水印的正确方法 只要三步!

Android添加水印的正确方法 只要三步!

2019年07月24日  | 移动技术网移动技术  | 我要评论

开门见山,添加水印的方法非常简单,其实就只有3个步骤

1、载入原始图片
2、载入水印图片
3、保存带有水印的图片

实现的原理就是:获取原始图片的宽高,然后,新建一个同样宽高的bitmap,将这个新的bitmap作为画布,接着,就在这个画布上面画原图,画水印图片,有文字就接着画文字。
上面哪个顺序一定不能乱,不然你可能就看不到水印,或则文字了,因为画在原图下面去了

绘制水印的代码如下:

 private static bitmap createwatermaskbitmap(bitmap src, bitmap watermark,
                        int paddingleft, int paddingtop) {
    if (src == null) {
      return null;
    }
    int width = src.getwidth();
    int height = src.getheight();
    //创建一个bitmap
    bitmap newbitmap = bitmap.createbitmap(width, height, config.argb_8888);// 创建一个新的和src长度宽度一样的位图
    //将该图片作为画布
    canvas canvas = new canvas(newbitmap);
    //在画布 0,0坐标上开始绘制原始图片
    canvas.drawbitmap(src, 0, 0, null);
    //在画布上绘制水印图片
    canvas.drawbitmap(watermark, paddingleft, paddingtop, null);
    // 保存
    canvas.save(canvas.all_save_flag);
    // 存储
    canvas.restore();
    return newbitmap;
  }

绘制文字的代码如下:

/**
   * 绘制文字到中间
   *
   * @param context
   * @param bitmap
   * @param text
   * @param size
   * @param color
   * @return
   */
  public static bitmap drawtexttocenter(context context, bitmap bitmap, string text,
                     int size, int color) {
    paint paint = new paint(paint.anti_alias_flag);
    paint.setcolor(color);
    paint.settextsize(dp2px(context, size));
    rect bounds = new rect();
    paint.gettextbounds(text, 0, text.length(), bounds);
    return drawtexttobitmap(context, bitmap, text, paint, bounds,
        (bitmap.getwidth() - bounds.width()) / 2,
        (bitmap.getheight() + bounds.height()) / 2);
  }

  /**
   *  图片上绘制文字
   */
  private static bitmap drawtexttobitmap(context context, bitmap bitmap, string text,
                      paint paint, rect bounds, int paddingleft, int paddingtop) {
    config bitmapconfig = bitmap.getconfig();

    paint.setdither(true); // 获取跟清晰的图像采样
    paint.setfilterbitmap(true);// 过滤一些
    if (bitmapconfig == null) {
      bitmapconfig = config.argb_8888;
    }
    bitmap = bitmap.copy(bitmapconfig, true);
    canvas canvas = new canvas(bitmap);

    canvas.drawtext(text, paddingleft, paddingtop, paint);
    return bitmap;
  }

效果图如下:

github地址为:https://github.com/chenguo4930/watermark
git地址为:https://github.com/chenguo4930/watermark.git

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网