`

用户注册时头像的获取

阅读更多
从相册获取头像和用照相机拍照获取
@Override
	public void onClick(View v) {

		switch (v.getId()) {
		// 返回按钮
		case R.id.btn_left:

			break;
		// 完成按钮
		case R.id.btn_right:
			registerService();
			break;
		// 到相册获取照片
		case R.id.btn_register_goto_xiangce:
			Intent intent3 = new Intent(Intent.ACTION_GET_CONTENT);
			intent3.addCategory(Intent.CATEGORY_OPENABLE);
			intent3.setType("image/*");
			intent3.putExtra("crop", "true");
			intent3.putExtra("aspectX", 1);
			intent3.putExtra("aspectY", 1);
			intent3.putExtra("outputX", 150);
			intent3.putExtra("outputY", 150);
			intent3.putExtra("return-data", true);
			startActivityForResult(intent3, 3);
			break;
		// 用照相机拍照获取头像
		case R.id.btn_register_goto_camera:
			boolean sdCardExist = Environment.getExternalStorageState().equals(
					android.os.Environment.MEDIA_MOUNTED);
			if (sdCardExist) {
				Intent intent4 = new Intent(
						"android.media.action.IMAGE_CAPTURE");
				intent4.putExtra(MediaStore.EXTRA_OUTPUT, Uri
						.fromFile(new File(Environment
								.getExternalStorageDirectory(), "camera.jpg")));
				intent4.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
				startActivityForResult(intent4, 4);

			} else
				Toast.makeText(v.getContext(), "请插入sd卡", Toast.LENGTH_LONG)
						.show();

			break;

		default:
			break;
		}
		super.onClick(v);
	}


获得图片后返回:
// 从相册或者照相机获取照片后返回
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (resultCode != RESULT_OK) {
			return;
		} else {
			switch (requestCode) {
			case 3:
				Bitmap cameraBitmap = (Bitmap) data.getExtras().get("data");
				BitmapDrawable bd = new BitmapDrawable(
						RegisterSecondActivity.this.getResources(),
						cameraBitmap);
				touxiang_byte = bitmapToBytes(cameraBitmap);
				str_head = byteToBase64(touxiang_byte);
				try {
					img_head.setBackgroundDrawable(bd);

				} catch (Exception e) {
					e.printStackTrace();
				}
				
				break;

			/* 拍照后保存图片,并跳到裁剪功能 */
			case 4:
				try {
					InputStream stream = new FileInputStream(new File(
							Environment.getExternalStorageDirectory(),
							"camera.jpg"));
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				BitmapFactory.Options opts = new BitmapFactory.Options();
				opts.inJustDecodeBounds = true;
				Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/camera.jpg",
						opts); // 此时返回bm为空
				opts.inJustDecodeBounds = false;
				int be = (int) (opts.outHeight / (float) 200);
				if (be <= 0)
					be = 1;
				opts.inSampleSize = be;
				// 重新读入图片,注意这次要把options.inJustDecodeBounds 设为 false哦
				bitmap = BitmapFactory.decodeFile("/sdcard/camera.jpg", opts);
				BitmapDrawable bd_camera = new BitmapDrawable(
						RegisterSecondActivity.this.getResources(), bitmap);
				touxiang_byte = bitmapToBytes(bitmap);
				img_head.setBackgroundDrawable(bd_camera);
				str_head = byteToBase64(touxiang_byte);
				break;
			}

		}
		super.onActivityResult(requestCode, resultCode, data);
	}


// 将图片转换为二进制数组的方法
	public byte[] bitmapToBytes(Bitmap bitmap) {
		if (bitmap == null) {
			return null;
		}
		final ByteArrayOutputStream os = new ByteArrayOutputStream();
		// 将Bitmap压缩成PNG编码,质量为100%存储
		bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);// 除了PNG还有很多常见格式,如jpeg等。
		return os.toByteArray();
	}


// 将数组转换成字符串
	public String byteToBase64(byte[] tBytes) {
		String tString = "";
		String tSentString = "";

		tString = Base64.encodeToString(tBytes, 0);
		try {
			tSentString = URLEncoder.encode(tString, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return tSentString;
	}
分享到:
评论
1 楼 happyboy858 2012-01-18  
求源码学习, 谢谢。EMAIL:441667111@qq.com

相关推荐

Global site tag (gtag.js) - Google Analytics