2013-04-05 16 views
2

我正在尋找ImageView對象的內置方法來告訴我從哪個文件中檢索到我的圖像。獲取ImageView加載它的圖像的文件名

對於早期在我所謂的代碼示例...

ImageView iv = new ImageView(MainActivity.this);     
iv.setImageBitmap(BitmapFactory.decodeFile(f.getAbsolutePath())); 

假設我再也不用爲「F」的引用,需要找出是什麼F。有沒有辦法做到這一點?我的工作是創建一個擴展ImageView的類,並且有一個字符串與它縮小。 (或者在ImageView和String之間創建一個映射)

建議?

+0

這是一個重複的問題:http://stackoverflow.com/questions/7989438/getting-the-file-path-from-a-picture-in-imageview – MaxOvrdrv 2013-04-05 01:50:18

+0

您的解決方法對我來說聽起來像是正確的解決方案。 – 2013-04-05 02:43:44

+0

如何獲得ImageView的圖像?它是來自相機還是圖庫的URI? – 2013-04-05 03:12:58

回答

8

最簡單的解決方法將可能使用一個標籤爲ImageView的:

ImageView iv = new ImageView(MainActivity.this); 
String path = f.getAbsolutePath();     
iv.setImageBitmap(BitmapFactory.decodeFile(path)); 
iv.setTag(path); 

檢索路徑:

String path = (String) iv.getTag(); 
+14

什麼是f.getAbsolutePath()? – DevC 2014-01-13 11:57:00

1

據我所知,所有BitmapFactory.decodeFile返回的是位圖。由於位圖可能來自任何來源(並非全部具有路徑,例如來自RAM),因此它沒有封裝在其中的文件路徑。

關於你的解決方法 - 任何會做,但選擇一個取決於你的內存/速度要求。例如,如果你只有一對,你可以使用Pair而不是地圖,或者你可以保留路徑旁邊的路徑 - 但這只是挑剔。

0
// GET THE URI FROM THE IMAGE (YOU NEED A BITMAP FOR THIS - WORKAROUND FOLLOWS) 
Uri tempUri = getImageUri(getApplicationContext(), bitmap); 

public Uri getImageUri(Context inContext, Bitmap inImage) { 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
    String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null); 
    return Uri.parse(path); 
} 

// THE WORKAROUND (OPTIONAL IN CASE YOU DO NOT HAVE A BITMAP) 
Bitmap bitmap = ((BitmapDrawable)youImageView.getDrawable()).getBitmap(); 

信用:https://stackoverflow.com/a/8306683/450534

// NOW THAT YOU WILL HAVE THE URI, USE THIS TO GET THE ABSOLUTE PATH OF THE IMAGE 
File finalFile = new File(getRealPathFromURI(tempUri)); 

public String getRealPathFromURI(Uri uri) { 
    Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
    cursor.moveToFirst(); 
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
    return cursor.getString(idx); 
} 

在我與Android,唯一需要我曾經有過這樣的經歷,當我開始對Twitter4J SDK和API TwitPic工作。 TwitPic需要您想要上傳的圖片的絕對路徑。這是我找到的最佳解決方案(實際上是幾種不同解決方案的組合),但它一直像魅力一樣。希望它可以幫助你。