一、main.xml布局文件


<?xml version= "1.0" encoding= "utf-8" ?> "http://schemas.android.com/apk/res/android"      android:orientation= "vertical"      android:layout_width= "fill_parent"      android:layout_height= "fill_parent" >      "@+id/imageView"          android:adjustViewBounds= "true"          android:layout_gravity= "center"          android:minWidth= "150dip"          android:minHeight= "150dip"          android:layout_width= "wrap_content"          android:layout_height= "wrap_content" />     

             

            

二、核心代码


package com.ljq.test;import java.io.ByteArrayOutputStream;import java.io.File;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.View;import android.widget.Button;import android.widget.ImageView;public class TestActivity extends Activity {    private static final int NONE = 0;    private static final int PHOTO_GRAPH = 1;// 拍照    private static final int PHOTO_ZOOM = 2; // 缩放    private static final int PHOTO_RESOULT = 3;// 结果    private static final String IMAGE_UNSPECIFIED = "image/*";    private ImageView imageView = null;    private Button btnPhone = null;    private Button btnTakePicture = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                imageView = (ImageView) findViewById(R.id.imageView);        btnPhone = (Button) findViewById(R.id.btnPhone);        btnPhone.setOnClickListener(onClickListener);        btnTakePicture = (Button) findViewById(R.id.btnTakePicture);        btnTakePicture.setOnClickListener(onClickListener);    }        private final View.OnClickListener onClickListener = new View.OnClickListener() {        @Override        public void onClick(View v) {            if(v==btnPhone){ //从相册获取图片                Intent intent = new Intent(Intent.ACTION_PICK, null);                intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);                startActivityForResult(intent, PHOTO_ZOOM);            }else if(v==btnTakePicture){ //从拍照获取图片                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment                    .getExternalStorageDirectory(),"temp.jpg")));                startActivityForResult(intent, PHOTO_GRAPH);            }        }    };    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (resultCode == NONE)            return;        // 拍照        if (requestCode == PHOTO_GRAPH) {            // 设置文件保存路径            File picture = new File(Environment.getExternalStorageDirectory()                    + "/temp.jpg");            startPhotoZoom(Uri.fromFile(picture));        }        if (data == null)            return;        // 读取相册缩放图片        if (requestCode == PHOTO_ZOOM) {            startPhotoZoom(data.getData());        }        // 处理结果        if (requestCode == PHOTO_RESOULT) {            Bundle extras = data.getExtras();            if (extras != null) {                Bitmap photo = extras.getParcelable("data");                ByteArrayOutputStream stream = new ByteArrayOutputStream();                photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0-100)压缩文件                //此处可以把Bitmap保存到sd卡中,具体请看:http://www.cnblogs.com/linjiqin/archive/2011/12/28/2304940.html                imageView.setImageBitmap(photo); //把图片显示在ImageView控件上            }        }        super.onActivityResult(requestCode, resultCode, data);    }    /**     * 收缩图片     *      * @param uri     */    public void startPhotoZoom(Uri uri) {        Intent intent = new Intent("com.android.camera.action.CROP");        intent.setDataAndType(uri, IMAGE_UNSPECIFIED);        intent.putExtra("crop", "true");        // aspectX aspectY 是宽高的比例        intent.putExtra("aspectX", 1);        intent.putExtra("aspectY", 1);        // outputX outputY 是裁剪图片宽高        intent.putExtra("outputX", 300);        intent.putExtra("outputY", 500);        intent.putExtra("return-data", true);        startActivityForResult(intent, PHOTO_RESOULT);    }}

更多相关文章

  1. Android根据电量变化为不同图片的方法【电池电量提示】
  2. Android 图片旋转(使用Matrix.setRotate方法)
  3. Android之关于手势操作图片的缩放与移动
  4. Android的TextView使用Html来处理图片显示、字体样式、超链接等
  5. Android volley框架加载网络图片
  6. android 网络图片查看器
  7. Android中自定义View支持缩放
  8. android 自定义dialog弹出和消失缩放动画
  9. Android 图片压缩

随机推荐

  1. 获取Android正在运行的任务和服务
  2. Unable to execute dex: Multiple dex fi
  3. 说说在 Android(安卓)如何在全局获取 Con
  4. 16 个Android(安卓)开发者必备工具资源
  5. Android中 加载一张大图片Caused by: jav
  6. tab上显示数字
  7. android开发环境
  8. Android(安卓)ListView组件中android:dra
  9. xamarin android 如何创建一个服务
  10. Android(安卓)中 QQ 和 微信打开第三方应