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


給圖片添加水印的基本思路都是載入原圖,添加文字或者載入水印圖片,保存圖片這三個部分

添加水印圖片:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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;
     }

添加文字

 

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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; 
           }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM