2014-11-05 44 views
0

我有一個imageview並單擊它顯示一個對話框,當點擊每個對話框項目時,我可以看到調用的攝像頭或畫廊調用。但是現在,當我在imageview上獲得圖像後,如何獲得圖像的路徑,如同額外的可能。如何從此代碼獲取圖像路徑

image_view = new ImageView(this); 

       image_view.setId(field_id); 
       image_view.setImageDrawable(getResources().getDrawable(
         R.drawable.ic_launcher)); 
       image_view.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         selectImage(); 
        } 
       }); 


private void selectImage() { 

    final CharSequence[] options = { "Take Photo", "Choose from Gallery", 
      "Cancel" }; 

    AlertDialog.Builder builder = new AlertDialog.Builder(
      Dynamic_layout.this); 
    builder.setTitle("Add Photo!"); 
    builder.setItems(options, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int item) { 
      if (options[item].equals("Take Photo")) { 
       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       File f = new File(android.os.Environment 
         .getExternalStorageDirectory(), "image1.jpg"); 
       intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); 
       startActivityForResult(intent, 1); 
      } else if (options[item].equals("Choose from Gallery")) { 
       Intent intent = new Intent(Intent.ACTION_PICK, 
         MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(intent, 2); 

      } else if (options[item].equals("Cancel")) { 
       dialog.dismiss(); 
      } 
     } 
    }); 
    builder.show(); 
} 


    @Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (requestCode == 1) { 
      File f = new File(Environment.getExternalStorageDirectory() 
        .toString()); 
      for (File temp : f.listFiles()) { 
       if (temp.getName().equals("image1.jpg")) { 
        f = temp; 
        break; 
       } 
      } 
      try { 
       Bitmap bitmap; 
       BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
       bitmapOptions.inSampleSize = 20; 
       bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), 
         bitmapOptions); 

       image_view.setImageBitmap(bitmap); 
       String path = android.os.Environment 
         .getExternalStorageDirectory() 
         + File.separator 
         + "PHOTO" + File.separator + "default"; 
       // f.delete(); 
       OutputStream outFile = null; 
       File file = new File(path, String.valueOf(System 
         .currentTimeMillis()) + ".jpg"); 
       try { 
        outFile = new FileOutputStream(file); 
        bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile); 
        outFile.flush(); 
        outFile.close(); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } else if (requestCode == 2) { 

      Uri selectedImage = data.getData(); 
      String[] filePath = { MediaStore.Images.Media.DATA }; 
      Cursor c = getContentResolver().query(selectedImage, filePath, 
        null, null, null); 
      c.moveToFirst(); 
      int columnIndex = c.getColumnIndex(filePath[0]); 
      String picturePath = c.getString(columnIndex); 
      c.close(); 
      BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
      bitmapOptions.inSampleSize = 20; 
      Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath, 
        bitmapOptions)); 
      Log.w("path of image in gallery", picturePath + ""); 
      image_view.setImageBitmap(thumbnail); 

     } 
} 
} 
+0

聲明你的'imagepath varibale'全局。 – Piyush 2014-11-05 07:26:04

+0

檢查:http://stackoverflow.com/questions/25882479/trying-to-get-an-image-from-gallery-or-camera-in-android/25882760#25882760 – 2014-11-05 07:26:58

回答

0

創建一個全局變量String imagePath(外onCreate),這樣所有的方法都可以訪問它。

使用此變量來獲得你的路徑,因此它可以在整個類中使用:

 try { 
      //add this 
      imagePath= f.getAbsolutePath(); 
      Bitmap bitmap; 
      BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
      bitmapOptions.inSampleSize = 20; 
      bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), 
        bitmapOptions); 

現在你可以使用類imagePath任何地方。