代碼請見我的資源http://download.csdn.net/detail/samguoyi/4351467
package test.sam.imgpickdemo;import java.io.File;import javax.security.auth.PrivateCredentialPermission;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.hardware.Camera;import android.media.ExifInterface;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.View;import android.widget.ImageView;public class PickPictureDemoActivity extends Activity implements View.OnClickListener{private static final int ACTIVITY_PICKLOCAL = 0;private static final int ACTIVITY_PICKCAMERA = 1;private ImageView showImageView = null;private File imgFile = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.main_pickcamera).setOnClickListener(this); findViewById(R.id.main_picklocal).setOnClickListener(this); showImageView = (ImageView)findViewById(R.id.main_showimg); } public void onClick(View v) { switch (v.getId()) {case R.id.main_picklocal:/* * 使用這種intent則調用任何註冊過的圖片瀏覽器,例如es檔案瀏覽器,來選取圖片 */Intent i = new Intent();i.setType("image/*");i.setAction(Intent.ACTION_GET_CONTENT);/* * 使用這種方式只調用系統的圖庫程式來選取圖片 *///Intent i = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);startActivityForResult(i, ACTIVITY_PICKLOCAL);break;case R.id.main_pickcamera:imgFile = new File(Environment.getExternalStorageDirectory(), "testpick"+System.currentTimeMillis()+".jpg");try {imgFile.createNewFile();} catch (Exception e) {}if(imgFile.exists()){Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imgFile));startActivityForResult(intent, ACTIVITY_PICKCAMERA);}break;default:break;} } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); System.out.println("resultCode = "+resultCode); String photopathString = null; if(resultCode == RESULT_OK) { if(requestCode == ACTIVITY_PICKLOCAL) { Cursor cursor = getContentResolver().query(data.getData(), null, null, null, null); cursor.moveToFirst(); photopathString = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); Bitmap bitmap = BitmapFactory.decodeFile(photopathString); showImageView.setImageBitmap(bitmap); cursor.close(); /* * 這段代碼可以擷取圖片的方向,以決定圖片是橫向放置還是豎向放置 */ try {ExifInterface exifInterface = new ExifInterface(photopathString);String tag = exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION);System.out.println("tag = "+tag);} catch (Exception e) {e.printStackTrace();} /* * 這段代碼可以將圖片的長寬等資訊decode出來而不需要分配記憶體 */ try { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(photopathString, options); System.out.println("options.outWidth = "+options.outWidth); System.out.println("options.outHeight = "+options.outHeight);} catch (Exception e) {} /* * 使用這段代碼可以縮小取得圖片尺寸options.inSampleSize為幾,則取得的圖片大小為原來的幾分之一 * 注意inSampleSize需要為2的冪次方 */ try { BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 8; Bitmap bitmap2 = BitmapFactory.decodeFile(photopathString, options); System.out.println("bitmap2.getWidth() = "+bitmap2.getWidth()); System.out.println("bitmap2.getHeight() = "+bitmap2.getHeight());} catch (Exception e) {} } if(requestCode == ACTIVITY_PICKCAMERA) { /* * 從網路攝影機返回的圖片無法從data.getData()中取得?不知道為啥 */ Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); System.out.println(bitmap.getWidth()); System.out.println(bitmap.getHeight());showImageView.setImageBitmap(bitmap); } } } }