標籤:圖片
給圖片添加浮水印的基本思路都是載入原圖,添加文字或者載入浮水印圖片,儲存圖片這三個部分
添加浮水印圖片:
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; }
Android 圖片添加浮水印圖片或者文字