实现图片的水印

98人阅读 评论(0) 收藏 举报
  1. //获取图片缩小的图片 
  2.     public static Bitmap scaleBitmap(String src,int max) 
  3.     { 
  4.         //获取图片的高和宽 
  5.         BitmapFactory.Options options = new BitmapFactory.Options(); 
  6.         //这一个设置使 BitmapFactory.decodeFile获得的图片是空的,但是会将图片信息写到options中 
  7.         options.inJustDecodeBounds = true;         
  8.         BitmapFactory.decodeFile(src, options);  
  9.        // 计算比例 为了提高精度,本来是要640 这里缩为64 
  10.         max=max/10
  11.         int be = options.outWidth / max; 
  12.          if(be%10 !=0
  13.           be+=10
  14.          be=be/10
  15.          if (be <= 0
  16.           be = 1
  17.         options.inSampleSize = be; 
  18.         //设置可以获取数据 
  19.         options.inJustDecodeBounds = false
  20.         //获取图片 
  21.         return BitmapFactory.decodeFile(src, options);         
  22.     } 
  23.     // 加水印 也可以加文字 
  24.     public static Bitmap watermarkBitmap(Bitmap src, Bitmap watermark, 
  25.             String title) { 
  26.         if (src == null) { 
  27.             return null
  28.         } 
  29.         int w = src.getWidth(); 
  30.         int h = src.getHeight();  
  31.         //需要处理图片太大造成的内存超过的问题,这里我的图片很小所以不写相应代码了         
  32.         Bitmap newb= Bitmap.createBitmap(w, h, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图 
  33.         Canvas cv = new Canvas(newb); 
  34.         cv.drawBitmap(src, 0, 0, null);// 在 0,0坐标开始画入src     
  35.         Paint paint=new Paint(); 
  36.         //加入图片 
  37.         if (watermark != null) { 
  38.             int ww = watermark.getWidth(); 
  39.             int wh = watermark.getHeight(); 
  40.             paint.setAlpha(50); 
  41.             cv.drawBitmap(watermark, w - ww + 5, h - wh + 5, paint);// 在src的右下角画入水印             
  42.         } 
  43.         //加入文字 
  44.         if(title!=null
  45.         { 
  46.             String familyName ="宋体"
  47.             Typeface font = Typeface.create(familyName,Typeface.BOLD);             
  48.             TextPaint textPaint=new TextPaint(); 
  49.             textPaint.setColor(Color.RED); 
  50.             textPaint.setTypeface(font); 
  51.             textPaint.setTextSize(22); 
  52.             //这里是自动换行的 
  53.             StaticLayout layout = new StaticLayout(title,textPaint,w,Alignment.ALIGN_NORMAL,1.0F,0.0F,true); 
  54.             layout.draw(cv); 
  55.             //文字就加左上角算了 
  56.             //cv.drawText(title,0,40,paint);  
  57.         } 
  58.         cv.save(Canvas.ALL_SAVE_FLAG);// 保存 
  59.         cv.restore();// 存储 
  60.         return newb; 
  61.     } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值