android图像编辑和处理(一)

1.使用内置Gallery应用程序选择图像:

</pre><pre name="code" class="java">package com.example.testphotoedit;

import java.io.FileNotFoundException;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.net.Uri;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {

	private ImageView chosenImageView,copyPicture;
	private Button choosePicture;
	private Uri imageFileUri;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fragment_main);
		choosePicture = (Button) findViewById(R.id.button_chose);
		chosenImageView = (ImageView) findViewById(R.id.chose_picture);
		copyPicture=(ImageView) findViewById(R.id.copy_picture);
		choosePicture.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		if (v.getId() == R.id.button_chose) {
			Intent chooseIntent = new Intent(
					Intent.ACTION_PICK,
					android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);//启动Gallery应用程序
			startActivityForResult(chooseIntent, 0);
		}
	}

	/* (non-Javadoc)
	 * @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
	 * 
	 * 在返回的意图数据中,返回选择的图像的URI
	 */
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		if (resultCode == RESULT_OK) {
			imageFileUri = data.getData();

			Display currentDisply = getWindowManager().getDefaultDisplay();
			int dw = currentDisply.getWidth() / 2 - 100;
			int dh = currentDisply.getHeight() / 2 - 100;
<span style="font-family: Arial, Helvetica, sans-serif;">			try {</span>

				BitmapFactory.Options bmpFactory = new BitmapFactory.Options();
				bmpFactory.inJustDecodeBounds = true;//加载图像的尺寸而非图像本身
				Bitmap bmp = BitmapFactory.decodeStream(getContentResolver()
						.openInputStream(imageFileUri), null, bmpFactory);

				int heightRatio = (int) Math.ceil(bmpFactory.outHeight
						/ (float) dh);
				int widthRatio = (int) Math.ceil(bmpFactory.outWidth
						/ (float) dw);

				if (heightRatio > 1 && widthRatio > 1) {
					if (heightRatio > widthRatio) {
						bmpFactory.inSampleSize = heightRatio;
					} else {
						bmpFactory.inSampleSize = widthRatio;
					}
				}

				bmpFactory.inJustDecodeBounds = false;//加载真实的图像
				bmp = BitmapFactory.decodeStream(getContentResolver()
						.openInputStream(imageFileUri), null, bmpFactory);
				chosenImageView.setImageBitmap(bmp);

			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}
}


2.在位图上绘制位图

Bitmap alteredBitmap = Bitmap.createBitmap(bmp.getWidth(),bmp.getWidth(), bmp.getConfig());
Canvas canvas=new Canvas(alteredBitmap);
Paint  paint=new Paint();
canvas.drawBitmap(bmp, 0,0, paint);
copyPicture.setImageBitmap(alteredBitmap);
<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.testphotoedit.MainActivity$PlaceholderFragment" >

    <Button 
        android:id="@+id/button_chose"
        android:layout_width="120dp"
        android:layout_height="60dp"
        android:text="选择图片"/>
    
    <ImageView
        android:id="@+id/chose_picture"
        android:layout_below="@+id/button_chose"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
     <ImageView
        android:id="@+id/copy_picture"
        android:layout_below="@+id/chose_picture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

注:有什么不懂的可以留言。。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。