Android拆分Bitmap完整示例

MainActivity如下:

[java][/java] view plaincopy

  1. package cc.testsplitimage;
  2. import java.util.ArrayList;
  3. import android.app.Activity;
  4. import android.graphics.Bitmap;
  5. import android.graphics.BitmapFactory;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.Button;
  10. import android.widget.ImageView;
  11. /**
  12.  * Demo描述:
  13.  * 拆分图片
  14.  *
  15.  * 参考资料:
  16.  * http://blog.csdn.net/arui319/article/details/7470193
  17.  * Thank you very much
  18.  */
  19. public class MainActivity extends Activity {
  20.     private Button mSplitButton;
  21.     private Bitmap mRawBitmap;
  22.     private ImageView mImageView;
  23.     private int row;
  24.     private int column;
  25.     private ArrayList<Bitmap> mPartImagesArrayLis;
  26.     @Override
  27.     protected void onCreate(Bundle savedInstanceState) {
  28.         super.onCreate(savedInstanceState);
  29.         setContentView(R.layout.main);
  30.         init();
  31.     }
  32.     private void init(){
  33.         mSplitButton=(Button) findViewById(R.id.splitButton);
  34.         mSplitButton.setOnClickListener(new ClickListenerImpl());
  35.         mImageView=(ImageView) findViewById(R.id.imageView);
  36.         mRawBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.e);
  37.         row=3;
  38.         column=3;
  39.     }
  40.     private class ClickListenerImpl implements OnClickListener{
  41.         @Override
  42.         public void onClick(View view) {
  43.             switch (view.getId()) {
  44.             case R.id.splitButton:
  45.                 mPartImagesArrayLis=splitImage(mRawBitmap, row, column);
  46.                 mImageView.setImageBitmap(null);
  47.                 break;
  48.             default:
  49.                 break;
  50.             }
  51.         }
  52.     }
  53.     /**
  54.      * @param rawBitmap 原来的Bitmap
  55.      * @param row       切成几行
  56.      * @param column    切成几列
  57.      * @return
  58.      */
  59.     private ArrayList<Bitmap> splitImage(Bitmap rawBitmap,int row,int column){
  60.         ArrayList<Bitmap> partImagesArrayList=new ArrayList<Bitmap>(row*column);
  61.         int rawBitmapWidth=rawBitmap.getWidth();
  62.         int rawBitmapHeight=rawBitmap.getHeight();
  63.         System.out.println(“rawBitmapWidth=”+rawBitmapWidth+”,rawBitmapHeight=”+rawBitmapHeight);
  64.         int perPartWidth=rawBitmapWidth/column;
  65.         int perPartHeight=rawBitmapHeight/row;
  66.         System.out.println(“perPartWidth=”+perPartWidth+”,perPartHeight=”+perPartHeight);
  67.         Bitmap perBitmap=null;
  68.         for (int i = 0; i < row; i++) {
  69.             for (int j = 0; j < column; j++) {
  70.                 int x=j*perPartWidth;
  71.                 int y=i*perPartHeight;
  72.                 System.out.println(“i=”+i+”,j=”+j+”,x=”+x+”,y=”+y);
  73.                 perBitmap=Bitmap.createBitmap(rawBitmap, x, y, perPartWidth, perPartHeight);
  74.                 partImagesArrayList.add(perBitmap);
  75.             }
  76.         }
  77.         System.out.println(“size=”+partImagesArrayList.size());
  78.         return partImagesArrayList;
  79.     }
  80. }

main.xml如下:

[html][/html] view plaincopy

  1. <RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
  2.     xmlns:tools=”http://schemas.android.com/tools”
  3.     android:layout_width=”match_parent”
  4.     android:layout_height=”match_parent” >
  5.     <Button
  6.         android:id=”@+id/splitButton”
  7.         android:layout_width=”wrap_content”
  8.         android:layout_height=”wrap_content”
  9.         android:layout_centerHorizontal=”true”
  10.         android:layout_marginTop=”10dip”
  11.         android:text=”拆分图片” />
  12.     <ImageView
  13.         android:id=”@+id/imageView”
  14.         android:layout_width=”wrap_content”
  15.         android:layout_height=”wrap_content”
  16.         android:layout_centerInParent=”true”
  17.         android:src=”@drawable/e” />
  18. </RelativeLayout>

标签