2

ImageView オブジェクトの組み込みメソッドを探して、どのファイルから画像を取得したかを教えてくれます。

たとえば、私が呼び出したコードの前半で...

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

'f' への参照がなくなったので、f が何であったかを調べる必要があるとします。それを行う方法はありますか?私の回避策は、ImageView を拡張し、それに対応する String を持つクラスを作成することです。(または、ImageView と String の間に Map を作成します)

おすすめは?

4

3 に答える 3

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 と TwitPic API に取り組み始めたときだけでした。TwitPic には、アップロードする画像の絶対パスが必要です。これは私が見つけた最良の解決策 (実際にはいくつかの異なる解決策の組み合わせ) でしたが、常に魅力的に機能しています。お役に立てば幸いです。

于 2013-04-05T03:23:40.423 に答える