Android 图片添加水印图片或者文字

来源:互联网 发布:人的音域 知乎 编辑:程序博客网 时间:2024/05/01 01:06

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

添加水印图片:

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 bitmapBitmap newb = Bitmap.createBitmap(w, h, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图Canvas cv = new Canvas(newb);// draw src intocv.drawBitmap(src, 0, 0, null);// 在 0,0坐标开始画入src// draw watermark intocv.drawBitmap(watermark, 20, 20, null);// 在src的右下角画入水印// save all clipcv.save(Canvas.ALL_SAVE_FLAG);// 保存// storecv.restore();// 存储return newb;}
添加文字

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




0 0