안 드 로 이 드 그림 그리 기 (6) - 로 컬 그림 을 가 져 오 거나 사진 을 찍 습 니 다.

본문 주소:http://blog.csdn.net/you_and_me12/article/details/7262988
SD 카드 에서 그림 자원 을 가 져 오 거나 새 그림 을 찍 습 니 다.
코드 를 먼저 붙이다
그림 가 져 오기:
설명: 사진 을 찍 어서 가 져 오 면 그림 의 저장 주 소 를 지정 할 수 있 습 니 다. 설명 하지 않 습 니 다.
		CharSequence[] items = {"  ", "  "};  
	    new AlertDialog.Builder(this)
		    .setTitle("      ")
		    .setItems(items, new OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					if( which == SELECT_PICTURE ){
						Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
						intent.addCategory(Intent.CATEGORY_OPENABLE);
						intent.setType("image/*");
						startActivityForResult(Intent.createChooser(intent, "    "), SELECT_PICTURE); 
			        }else{
			        	Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
			        	startActivityForResult(intent, SELECT_CAMER);  
			        }
				}
			})
			.create().show(); 

그림 을 처리 하 는 방법 1. 그림 을 되 돌려 주 는 것 을 직접 처리 합 니 다.
설명:
1. 인터넷 에서 설명 한 바 와 같이 돌아 오 는 사진 을 직접 처리 하 는 것 은 시스템 에 의 해 압축 된 것 이지 만 자신 이 테스트 하 는 과정 에서 차이 가 없다.
2. 사용자 가 끊임없이 그림 을 다시 가 져 오 면 현재 의 Bmp 메모 리 를 방출 해 야 합 니 다. 그렇지 않 으 면 오류 가 발생 합 니 다!bmp.recycle()。
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if(resultCode == RESULT_OK){
			//    
			Uri uri = data.getData(); 
			ContentResolver cr = this.getContentResolver(); 
			try {
				if(bmp != null)//       ,     ,      
					bmp.recycle();
				bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("the bmp toString: " + bmp);
			imageSV.setBmp(bmp);
		}else{
			Toast.makeText(SetImageActivity.this, "       ", Toast.LENGTH_SHORT).show();
		}
			
	}

그림 처리 방법 2. 그림 의 주 소 를 얻 은 다음 처리:
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if(resultCode == RESULT_OK){
			Uri uri = data.getData(); 
			String [] proj={MediaStore.Images.Media.DATA};
			Cursor cursor = managedQuery( uri,
					proj,                 // Which columns to return
					null,       // WHERE clause; which rows to return (all rows)
					null,       // WHERE clause selection arguments (none)
					null);                 // Order-by clause (ascending by name)
			
			int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
			cursor.moveToFirst();
			
			String path = cursor.getString(column_index);
			bmp = BitmapFactory.decodeFile(path);
			System.out.println("the path is :" + path);
		}else{
			Toast.makeText(SetImageActivity.this, "       ", Toast.LENGTH_SHORT).show();
		}
			
	}

좋은 웹페이지 즐겨찾기