Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取ImageView加载的文件名';s图像来自_Android - Fatal编程技术网

Android 获取ImageView加载的文件名';s图像来自

Android 获取ImageView加载的文件名';s图像来自,android,Android,我正在寻找ImageView对象的内置方法,以告诉我从哪个文件检索图像 例如,在我前面调用的代码中 ImageView iv = new ImageView(MainActivity.this); iv.setImageBitmap(BitmapFactory.decodeFile(f.getAbsolutePath())); 假设我不再引用“f”,需要找出f是什么。有办法吗?我的工作是创建一个扩展ImageView的类,并用它来裁剪字符串。(或在ImageVi

我正在寻找ImageView对象的内置方法,以告诉我从哪个文件检索图像

例如,在我前面调用的代码中

ImageView iv = new ImageView(MainActivity.this);                
iv.setImageBitmap(BitmapFactory.decodeFile(f.getAbsolutePath()));
假设我不再引用“f”,需要找出f是什么。有办法吗?我的工作是创建一个扩展ImageView的类,并用它来裁剪字符串。(或在ImageView和字符串之间创建映射)


建议?

据我所知,所有BitmapFactory.decode文件返回的都是位图。由于位图可能来自任何源(并非所有源都有路径,例如来自RAM),因此它没有封装在其中的文件路径

关于您的解决方案-任何都可以,但选择一个取决于您的内存/速度要求。例如,如果您只有一对,您可以使用pair而不是map,或者您可以只保留位图旁边的路径,但这只是吹毛求疵

// 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();
积分:


在我使用Android的经验中,我唯一需要做的就是开始使用Twitter4JSDK和TwitpicAPI。TwitPic需要您要上载的图像的绝对路径。这是我找到的最好的解决方案(实际上是几种不同的解决方案的组合),但它一直都很有魅力。希望对您有所帮助。

最简单的解决方法可能是为ImageView使用标记:

ImageView iv = new ImageView(MainActivity.this);
String path = f.getAbsolutePath();                 
iv.setImageBitmap(BitmapFactory.decodeFile(path));
iv.setTag(path);
正在检索路径:

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

这是一个重复的问题:您的解决方案对我来说似乎是正确的解决方案。您如何获得
ImageView
的图像?它是来自相机还是画廊的URI?什么是f.getAbsolutePath()?@DevC f可能是一个文件对象。如果从图像选择器获取图像,更常见的情况是,URI对象将由Intent.getData()检索,并将改为使用ImageView.setImageURI()进行设置。
String path = (String) iv.getTag();