2012-06-15 46 views
0

我正在處理應用程序,我希望用戶可以從圖庫中選擇圖像,以便他可以對圖像應用圖像。我成功地訪問了移動畫廊,現在我想知道如何保存所選圖像以進一步處理。所選圖像將用於在其上應用框架。從圖庫中選擇圖片並保存以供將來使用

回答

1

你在這裏。

protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch(requestCode) { 
    case REQ_CODE_PICK_IMAGE: 
     if(resultCode == RESULT_OK){ 
      Uri selectedImage = imageReturnedIntent.getData(); 
      String[] filePathColumn = {MediaStore.Images.Media.DATA}; 

      Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String filePath = cursor.getString(columnIndex); 
      cursor.close(); 


      Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath); 

      //Now do whatever processing you want to do on it. 
     } 
    } 
} 
0

使用下面的代碼從圖庫中選擇圖片:

Intent intent=new Intent(); 
intent.setType=("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), PICK_IMAGE); 
/*Declare PICK_IMAGE globally : private static final int PICK_IMAGE = 1; */ 

實際的代碼從這裏開始

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    switch (requestCode) { 
    case PICK_IMAGE: 
     if (resultCode == Activity.RESULT_OK) { 
      Uri selectedImageUri = data.getData(); 
      try { 
       // OI FILE Manager 
       String filemanagerstring = selectedImageUri.getPath(); 

       // MEDIA GALLERY 
       String selectedImagePath = getPath(selectedImageUri); 

       if (selectedImagePath != null) { 
        filePath = selectedImagePath; 
       } else if (filemanagerstring != null) { 
        filePath = filemanagerstring; 
       } else { 
        Toast.makeText(getApplicationContext(), "Unknown path", 
          Toast.LENGTH_LONG).show(); 
        Log.e("Bitmap", "Unknown path"); 
       } 

       if (filePath != null) { 
        Log.e("file path ","file path "+filePath); 
        GlobalValues.camefromtw="true"; 
        decodeFile(filePath); 
       } else { 
        bitmap = null; 
       } 
      } catch (Exception e) { 
       Toast.makeText(getApplicationContext(), "Internal error", 
         Toast.LENGTH_LONG).show(); 
       Log.e(e.getClass().getName(), e.getMessage(), e); 
      } 
     } 
     break;protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    switch (requestCode) { 
    case PICK_IMAGE: 
     Log.e("result code","result code"+resultCode+" result "+Activity.RESULT_OK); 
     if (resultCode == Activity.RESULT_OK) { 
      Uri selectedImageUri = data.getData(); 
      try { 
       // OI FILE Manager 
       String filemanagerstring = selectedImageUri.getPath(); 

       // MEDIA GALLERY 
       String selectedImagePath = getPath(selectedImageUri); 

       if (selectedImagePath != null) { 
        filePath = selectedImagePath; 
       } else if (filemanagerstring != null) { 
        filePath = filemanagerstring; 
       } else { 
        Toast.makeText(getApplicationContext(), "Unknown path", 
          Toast.LENGTH_LONG).show(); 
        Log.e("Bitmap", "Unknown path"); 
       } 

       if (filePath != null) { 

        decodeFile(filePath); 
       } else { 
        bitmap = null; 
       } 
      } catch (Exception e) { 
       Toast.makeText(getApplicationContext(), "Internal error", 
         Toast.LENGTH_LONG).show(); 
       Log.e(e.getClass().getName(), e.getMessage(), e); 
      } 
     } 
     break; 
    default: 
    } 

圖片在文件路徑收到,現在你可以使用它,在這裏,在這個代碼我正在使用tho sto設置ImageView

public void decodeFile(String filePath) { 

    // Decode image size 
    BitmapFactory.Options o = new BitmapFactory.Options(); 
    o.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(filePath, o); 

    // The new size we want to scale to 
    final int REQUIRED_SIZE = 1024; 

    // Find the correct scale value. It should be the power of 2. 
    int width_tmp = o.outWidth, height_tmp = o.outHeight; 
    int scale = 1; 
    while (true) { 
     if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE) 
      break; 
     width_tmp /= 2; 
     height_tmp /= 2; 
     scale *= 2; 
    } 

    // Decode with inSampleSize 
    BitmapFactory.Options o2 = new BitmapFactory.Options(); 
    o2.inSampleSize = scale; 
    bitmap = BitmapFactory.decodeFile(filePath, o2); 

    image.setImageBitmap(bitmap); 

} 
相關問題