欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-03-02 21:11:34
开门见山,添加水印的方法非常简单,其实就只有3个步骤: 1、载入原始图片 2、载入水印图片 3、保存带有水印的图片 实现的原理就是:获取原始图片的宽高,然后,新建一...

开门见山,添加水印的方法非常简单,其实就只有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;
  }

效果图如下:

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

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

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