从本地获取或者相机获取图片上传

来源:互联网 发布:美的工作 知乎 编辑:程序博客网 时间:2024/06/05 09:51

获取图片并且上传到服务器,或者在当前页面显示,这种功能是很多软件都需要的,最近也没少用,今天就单独写了一个Demo,再次备份,方便以后再次用到能够很方便的找到。

在MainActivity中,主要分两个路,一路是调用相机拍照,一路是调用系统相册,(通过一个AlertDialog实现两路的选择功能)。获取图片的bitmap,最后对bitmap进行相应的处理,你可以在当前页面显示,也可以上传的到服务器,在延伸一下上传到服务器之后一般服务器会返回一些参数,比如上传成功与否,并且还有一些你需要处理的信息,这些参数通过handler进行传递,然后再handler中进行数据解析并作出相应的处理。我在这里仅仅是把获取的bitmap在当前的activity中进行显示。

MainActivity.java

public class MainActivity extends Activity {private Button button1;String SD_CARD_TEMP_DIR = Environment.getExternalStorageDirectory()+ File.separator + "tmpPhoto1.jpg";Bitmap bitmap = null;private ImageView imageView;@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        imageView = (ImageView) findViewById(R.id.ItemImage);        //找到button并且进行监听        button1 = (Button)findViewById(R.id.button1);        button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) { final String[] items = { "相机拍摄", "手机相册" }; new AlertDialog.Builder(MainActivity.this).setTitle("设置") .setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog,     int which) {     if (which == 0) {     Intent intent = new Intent(     MediaStore.ACTION_IMAGE_CAPTURE);     intent.putExtra(MediaStore.EXTRA_OUTPUT,     Uri.fromFile(new File(     SD_CARD_TEMP_DIR)));     startActivityForResult(intent, 1);     } else {     doPickPhotoFromGallery();     }     } }).show();}});    }    @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 1) {if (resultCode == Activity.RESULT_OK) {BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();bitmapOptions.inSampleSize = 8;File file = new File(SD_CARD_TEMP_DIR);if (file.exists()) {Bitmap cameraBitmap = BitmapFactory.decodeFile(SD_CARD_TEMP_DIR, bitmapOptions);bitmap = cameraBitmap;//uploadFile(bitmap);imageView.setImageBitmap(bitmap);}}}else if (requestCode == 2) {if (resultCode == Activity.RESULT_OK) {Bitmap photo = data.getParcelableExtra("data");bitmap = photo;if (photo != null) {//uploadFile(bitmap);imageView.setImageBitmap(bitmap);}}}}// 请求Gallery程序protected void doPickPhotoFromGallery() {try {// Launch picker to choose photo for selected contactfinal Intent intent = getPhotoPickIntent();startActivityForResult(intent, 2);} catch (ActivityNotFoundException e) {Toast.makeText(this, "未能找到照片", Toast.LENGTH_LONG).show();}}// 封装请求Gallery的intentpublic static Intent getPhotoPickIntent() {Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);intent.setType("image/*");intent.putExtra("crop", "true");//intent.putExtra("aspectX", 1);//intent.putExtra("aspectY", 2);intent.putExtra("outputX", 277);intent.putExtra("outputY", 373);intent.putExtra("return-data", true);return intent;}}

uploadFile(bitmap)这个方法是去实现一些上传文件的功能,一般都是上传到服务器,在这个例子中没有去添加这个功能。

Demo下载:http://download.csdn.net/detail/walker02/4161915





原创粉丝点击