본문 바로가기

Android/LiveWallPaper

[펌]

URI를 가지고 Image Path 얻어 오기

* Gallery를 실행 하여 Crop이미지 가지고 오기
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
    intent.setType("image/*");
    intent.putExtra("crop", "true");
    DisplayMetrics dm = getResources().getDisplayMetrics();
    int width = dm.widthPixels;
    int height = dm.heightPixels;
    intent.putExtra("outputX",         width);
    intent.putExtra("outputY",         height);
    intent.putExtra("aspectX",         width);
    intent.putExtra("aspectY",         height);
    intent.putExtra("scale",           true);
    intent.putExtra("noFaceDetection", true);
   // intent.putExtra("setWallpaper",    true); // Android의 Wall paper 시스템 서비스 사용 여부
   // intent.putExtra("return-data", true); // crop 이미지를 intent를 통해서 수신 받을 지 여부 crop 이미지가 100KB가 넘을 경우 오류 발생됨
   startActivityForResult(intent, requestCode );

* URI를 가지고 Image Path 얻어 오기   
          
    Cursor c = getContentResolver().query(Uri.parse(data.getAction()), null,null,null,null);
    c.moveToNext();
    String path = c.getString(c.getColumnIndex(MediaStore.MediaColumns.DATA));
    Uri uri = Uri.fromFile(new File(path));
    Log.d("URI PATH=", uri.toString());
    c.close();

* Image path를 가지고 URI 얻어 오기
   String fileStr = "file:///sdcard/DCIM/Camera/파일명";
   Uri fileUri = Uri.parse(fileStr);
   String filePath = fileUri.getPath();
   Cursor c = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,null, "_data = '" + filePath + "'", null,null);
   c.moveToNext();
   int id = c.getInt(0);
   Uri uri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id);
   Log.d("URI", uri.toString());

참조)http://blog.naver.com/PostView.nhn?blogId=huewu&logNo=110084637531&redirect=Dlog&widgetTypeCall=true

http://gggura.egloos.com/3919164

'Android > LiveWallPaper' 카테고리의 다른 글

예제들  (0) 2011.01.18