android影像處理系列之五--給圖片添加邊框(中)

來源:互聯網
上載者:User

標籤:圖片   實現   ext   技術   title   etop   param   rda   方式   

前面一篇講到給圖片加邊框的方式,只能給圖片加一些有規則的邊框,如果想加一些比較精美的效果,就有點麻煩了。下面就給出解決這個問題的思路。

思路是:一些比較精美的花邊圖片我們是很難用代碼控制,就目前本人水平是達不到,不排除牛人,再說了PS那些效果都是程式員做出來,肯定有實現的方法,這可能就要涉及很複雜的圖形學。扯遠了,接來說怎麼用那些精美的花邊做為圖片的邊框。簡單的方式是用兩張圖片疊加。最簡單的一種是本文介紹的,用透明的PNG格式圖片。因為Android是支援PNG圖片處理的,而且PNG圖片有透明度值,所以,添加那些花邊邊框可以先把圖片做成全透明的(美工做圖片的時候可以先建立一張全透明圖片,再往圖片上添加花邊。),然後再疊加上去就OK了。要注意的是,邊框有大小,最好是大一點,如果要處理的圖片比較大,可以先將縮放到一定比例,再添加邊框;如果邊框比圖片大,先要對邊框進行縮放,具體縮放見前面的android影像處理系列之二--圖片旋轉、縮放、反轉,這裡面就不貼代碼了。

廢話少說,下面看:(的時候圖片大小不一樣,比較醜)

    +     

代碼:

這裡的res是邊框圖片,還是一樣,不建議放到drawable下面,最後是放到assets目錄,原因就不用說了吧

 

[java] view plain copy
  1. /** 
  2.  * 添加邊框 
  3.  * @param bm 原圖片 
  4.  * @param res 邊框資源 
  5.  * @return 
  6.  */  
  7. private Bitmap addBigFrame(Bitmap bm, int res)  
  8. {  
  9.     Bitmap bitmap = decodeBitmap(res);  
  10.     Drawable[] array = new Drawable[2];  
  11.     array[0] = new BitmapDrawable(bm);  
  12.     Bitmap b = resize(bitmap, bm.getWidth(), bm.getHeight());  
  13.     array[1] = new BitmapDrawable(b);  
  14.     LayerDrawable layer = new LayerDrawable(array);  
  15.     return drawableToBitmap(layer);  
  16. }  
  17.   
  18. /** 
  19.  * 將Drawable轉換成Bitmap 
  20.  * @param drawable 
  21.  * @return 
  22.  */  
  23. private Bitmap drawableToBitmap(Drawable drawable)  
  24. {  
  25.     Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);  
  26.     Canvas canvas = new Canvas(bitmap);  
  27.     // canvas.setBitmap(bitmap);  
  28.     drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());  
  29.     drawable.draw(canvas);  
  30.     return bitmap;  
  31. }  
  32.   
  33. /** 
  34.  * 將R.drawable.*轉換成Bitmap 
  35.  * @param res 
  36.  * @return 
  37.  */  
  38. private Bitmap decodeBitmap(int res)  
  39. {  
  40.     return BitmapFactory.decodeResource(mContext.getResources(), res);  
  41. }  

 

android影像處理系列之五--給圖片添加邊框(中)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.