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

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

添加水印图片:

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




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。