首页 > 代码库 > android 为图片打上水印

android 为图片打上水印

说起水印其实很简单,就是在一张图片上面画上另一张图片或文字

实现如下:

[java] view plaincopy
  1. package com.tang.watermark;  
  2.   
  3.   
  4. import android.app.Activity;  
  5. import android.graphics.Bitmap;  
  6. import android.graphics.BitmapFactory;  
  7. import android.graphics.Canvas;  
  8. import android.graphics.PixelFormat;  
  9. import android.graphics.Bitmap.Config;  
  10. import android.graphics.drawable.BitmapDrawable;  
  11. import android.graphics.drawable.Drawable;  
  12. import android.os.Bundle;  
  13. import android.view.View;  
  14. import android.view.View.OnClickListener;  
  15. import android.widget.Button;  
  16. import android.widget.ImageView;  
  17.   
  18. public class MainActivity extends Activity {  
  19.     ImageView imageView;  
  20.     Bitmap mark;  
  21.     @Override  
  22.     protected void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.activity_main);  
  25.         imageView = (ImageView) findViewById(R.id.imageView1);   
  26.         imageView.setImageResource(R.drawable.heihei);  
  27.         mark = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);  
  28.           
  29.           
  30.         Button button = (Button) findViewById(R.id.button1);  
  31.           
  32.         button.setOnClickListener(new OnClickListener() {  
  33.             @Override  
  34.             public void onClick(View v) {  
  35.                 // TODO Auto-generated method stub  
  36.                 Bitmap temp = watermark(drawableToBitmap(imageView.getDrawable()),mark,50,100);  
  37.                 imageView.setImageBitmap(temp);  
  38.             }  
  39.         });  
  40.     }  
  41.     /** 
  42.      * 将bitmap转换为Drawable 
  43.      * @param bitmap 
  44.      * @return 
  45.      */  
  46.     public static Drawable bitmapToDrawable(Bitmap bitmap)  
  47.     {  
  48.         BitmapDrawable bd = new BitmapDrawable(bitmap);  
  49.         return bd;  
  50.     }  
  51.       
  52.     /** 
  53.      * @param src 
  54.      * @param bg 
  55.      * @param color 
  56.      * @return 
  57.      */  
  58.     public static Bitmap watermark(Bitmap src,Bitmap mark,int x,int y)  
  59.     {  
  60.         int w = src.getWidth();    
  61.         int h = src.getHeight();    
  62.         Bitmap newb = Bitmap.createBitmap( w, h, Config.ARGB_8888 );  
  63.         Canvas cv = new Canvas(newb);     
  64.         cv.drawBitmap(src, 0, 0, null );   
  65.         cv.drawBitmap(mark,x, y, null );  
  66.         cv.save( Canvas.ALL_SAVE_FLAG );//保存    
  67.         cv.restore();//存储    
  68.         return newb;  
  69.     }  
  70.       
  71.       
  72.     /** 
  73.      * Drawable 转换为Bitmap 
  74.      * @param drawable 
  75.      * @return 
  76.      */  
  77.     public static Bitmap drawableToBitmap(Drawable drawable) {    
  78.         // 取 drawable 的长宽    
  79.         int w = drawable.getIntrinsicWidth();    
  80.         int h = drawable.getIntrinsicHeight();     
  81.         // 取 drawable 的颜色格式    
  82.         Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888    
  83.                 : Bitmap.Config.RGB_565;    
  84.         Bitmap bitmap = Bitmap.createBitmap(w, h, config);     
  85.         Canvas canvas = new Canvas(bitmap);    
  86.         drawable.setBounds(0, 0, w, h);    
  87.         drawable.draw(canvas);    
  88.         return bitmap;    
  89.     }    
  90.   

android 为图片打上水印