1. 程式人生 > >android影象處理系列之五--給圖片新增邊框(中)

android影象處理系列之五--給圖片新增邊框(中)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

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

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

android影象處理系列之二--圖片旋轉、縮放、反轉,這裡面就不貼程式碼了。

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

    +     

程式碼:

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

 

 /**  * 新增邊框  * @param bm 原圖片  * @param res 邊框資源  * @return
  */
 private Bitmap addBigFrame(Bitmap bm, int res) {  Bitmap bitmap = decodeBitmap(res);  Drawable[] array = new Drawable[2];  array[0] = new BitmapDrawable(bm);  Bitmap b = resize(bitmap, bm.getWidth(), bm.getHeight());  array[1] = new
BitmapDrawable(b);  LayerDrawable layer = new LayerDrawable(array);  return drawableToBitmap(layer); } /**  * 將Drawable轉換成Bitmap  * @param drawable  * @return  */ private Bitmap drawableToBitmap(Drawable drawable) {  Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);  Canvas canvas = new Canvas(bitmap);  // canvas.setBitmap(bitmap);  drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());  drawable.draw(canvas);  return bitmap; } /**  * 將R.drawable.*轉換成Bitmap  * @param res  * @return  */ private Bitmap decodeBitmap(int res) {  return BitmapFactory.decodeResource(mContext.getResources(), res); }


 

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述