Android拆分Bitmap完整示例

来源:互联网 发布:黑马电商大数据就业班 编辑:程序博客网 时间:2024/05/19 14:38

MainActivity如下:

package cc.testsplitimage;import java.util.ArrayList;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;/** * Demo描述: * 拆分图片 *  * 参考资料: * http://blog.csdn.net/arui319/article/details/7470193 * Thank you very much */public class MainActivity extends Activity {    private Button mSplitButton;    private Bitmap mRawBitmap;    private ImageView mImageView;    private int row;    private int column;    private ArrayList<Bitmap> mPartImagesArrayLis;    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}    private void init(){    mSplitButton=(Button) findViewById(R.id.splitButton);    mSplitButton.setOnClickListener(new ClickListenerImpl());    mImageView=(ImageView) findViewById(R.id.imageView);    mRawBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.e);    row=3;    column=3;    }        private class ClickListenerImpl implements OnClickListener{@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.splitButton:mPartImagesArrayLis=splitImage(mRawBitmap, row, column);mImageView.setImageBitmap(null);break;default:break;}}    }    /**     * @param rawBitmap 原来的Bitmap     * @param row       切成几行     * @param column    切成几列     * @return     */    private ArrayList<Bitmap> splitImage(Bitmap rawBitmap,int row,int column){    ArrayList<Bitmap> partImagesArrayList=new ArrayList<Bitmap>(row*column);    int rawBitmapWidth=rawBitmap.getWidth();    int rawBitmapHeight=rawBitmap.getHeight();    System.out.println("rawBitmapWidth="+rawBitmapWidth+",rawBitmapHeight="+rawBitmapHeight);    int perPartWidth=rawBitmapWidth/column;    int perPartHeight=rawBitmapHeight/row;    System.out.println("perPartWidth="+perPartWidth+",perPartHeight="+perPartHeight);    Bitmap perBitmap=null;    for (int i = 0; i < row; i++) {for (int j = 0; j < column; j++) {int x=j*perPartWidth;int y=i*perPartHeight;System.out.println("i="+i+",j="+j+",x="+x+",y="+y);perBitmap=Bitmap.createBitmap(rawBitmap, x, y, perPartWidth, perPartHeight);partImagesArrayList.add(perBitmap);}}    System.out.println("size="+partImagesArrayList.size());return partImagesArrayList;    }   }


 

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <Button        android:id="@+id/splitButton"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_marginTop="10dip"        android:text="拆分图片" />       <ImageView        android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:src="@drawable/e" /></RelativeLayout>


 

原创粉丝点击