package com.klp.demo_025;
?
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
?
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
?
public class MainActivity extends Activity {
?
? ? private ImageView iv;
? ? private Button button;
? ? private File file;
? ? private Uri uri;
?
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
? ? ? ? iv = (ImageView) findViewById(R.id.imageView1);
? ? ? ? button = (Button) findViewById(R.id.button1);
?
? ? ? ? file = new File(this.getExternalFilesDir(null), "image.jpg");
? ? ? ? uri = Uri.fromFile(file);
?
? ? ? ? button.setOnClickListener(new View.OnClickListener() {
?
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onClick(View v) {
? ? ? ? ? ? ? ? // TODO Auto-generated method stub
? ? ? ? ? ? ? ? Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
? ? ? ? ? ? ? ? intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
? ? ? ? ? ? ? ? intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
? ? ? ? ? ? ? ? startActivityForResult(intent, 2);
? ? ? ? ? ? }
? ? ? ? });
?
? ? }
?
? ? @Override
? ? protected void onActivityResult(int requestCode, int resultCode, Intent data) {
? ? ? ? // TODO Auto-generated method stub
? ? ? ? super.onActivityResult(requestCode, resultCode, data);
? ? ? ? if (resultCode == RESULT_OK) {
? ? ? ? ? ? if (requestCode == 2) {
? ? ? ? ? ? ? ? startPhotoZoom(uri);
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? BitmapFactory.Options options = new BitmapFactory.Options();
? ? ? ? ? ? ? ? ? ? options.inSampleSize = 2;
? ? ? ? ? ? ? ? ? ? Bitmap bitmap = BitmapFactory.decodeFile(file.getPath(),
? ? ? ? ? ? ? ? ? ? ? ? ? ? options);
? ? ? ? ? ? ? ? ? ? // 压缩图片
//? ? ? ? ? ? ? ? ? ? bitmap = compressImage(bitmap,500);
?
? ? ? ? ? ? ? ? ? ? if (bitmap != null) {
? ? ? ? ? ? ? ? ? ? ? ? // 显示图片
? ? ? ? ? ? ? ? ? ? ? ? iv.setImageBitmap(bitmap);
? ? ? ? ? ? ? ? ? ? ? ? // 保存图片
? ? ? ? ? ? ? ? ? ? ? ? FileOutputStream fos = null;
? ? ? ? ? ? ? ? ? ? ? ? fos = new FileOutputStream(file);
? ? ? ? ? ? ? ? ? ? ? ? bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
? ? ? ? ? ? ? ? ? ? ? ? fos.flush();
? ? ? ? ? ? ? ? ? ? ? ? fos.close();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? } catch (Exception e) {
? ? ? ? ? ? ? ? ? ? // TODO: handle exception
?
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
?
? ? ? ? }
?
? ? }
?
? ? /**
? ? * 裁剪图片
? ? *
? ? * @param uri
? ? */
? ? public void startPhotoZoom(Uri uri) {
? ? ? ? Intent intent = new Intent("com.android.camera.action.CROP");
? ? ? ? intent.setDataAndType(uri, "image/*");
? ? ? ? intent.putExtra("crop", "true");// crop=true 有这句才能出来最后的裁剪页面.
? ? ? ? intent.putExtra("aspectX", 1);// 这两项为裁剪框的比例.
? ? ? ? intent.putExtra("aspectY", 1);// x:y=1:1
? ? ? ? intent.putExtra("outputX", 200);//图片输出大小
? ? ? ? intent.putExtra("outputY", 200);
? ? ? ? intent.putExtra("output", uri);
? ? ? ? intent.putExtra("outputFormat", "JPEG");// 返回格式
? ? ? ? startActivityForResult(intent, 3);
? ? }
?
? ? /**
? ? * 将图片image压缩成大小为 size的图片(size表示图片大小,单位是KB)
? ? *
? ? * @param image
? ? *? ? ? ? ? ? 图片资源
? ? * @param size
? ? *? ? ? ? ? ? 图片大小
? ? * @return Bitmap
? ? */
? ? private Bitmap compressImage(Bitmap image, int size) {
?
? ? ? ? ByteArrayOutputStream baos = new ByteArrayOutputStream();
? ? ? ? // 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
? ? ? ? image.compress(Bitmap.Compres