Android添加水印


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

更多相关文章

  1. [Android(安卓)Pro] 控制硬加速 hardwareAccelerated 在3.0才有
  2. Android(安卓)快速实现 ViewPager 滑动页卡切换(可用作整个 app上
  3. 通过创建一个位图的XY Chart来学习Android绘图类Rect,Paint,Bitm
  4. (4.1.36.3)android Graphics(一):概述及基本几何图形绘制
  5. Android中UI视图之试图绘制机制
  6. Android(安卓)UI编程进阶——使用SurfaceViewt和Canvas实现动态
  7. 【摘录】Android中UI视图之试图绘制机制
  8. Android检查GPU呈现速度和过度绘制
  9. Android(安卓)自定义控件之滚动字幕条

随机推荐

  1. 深入讲解Android中Activity launchMode
  2. Android我还可以相信你多少系列文章五之
  3. php与android的简单交互
  4. Android技术博文汇总
  5. Drawable Resources Part I(Drawable 资源
  6. Android的Handler,Looper源码剖析
  7. React Native与Android原生之间的通讯
  8. 使用Eclipse搭建简易Android服务器
  9. Android菜鸟的成长笔记(2)——第一个Androi
  10. Android——View宽高的设置和多种获取宽