从ImageView获取图像路径?

6

我有一个 ImageView,我想获取图像的路径并将其添加到一个 String 中。我想这样做是因为我需要将它发送到我的 Web 服务作为默认图像。

我该怎么做呢?

ImageView

<ImageView
    android:id="@+id/ivPerfil"
    android:padding="5dp"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:src="@drawable/icon_usuario"
    android:scaleType="fitXY"
    />

获取路径

ivPerfil = (ImageView)findViewById(R.id.ivPerfil);
Drawable img = getResources().getDrawable(R.drawable.icon_usuario);
String pathImage = img.toString();

那么如果不是所请求的图像路径,pathImage 是什么? - Marcus
2个回答

11

你不能直接获取ImageView引用的图像路径,但有一个解决方法。

由于在设置图片时您明确知道图片的路径(因为不知道它就无法设置),因此可以选择设置View的标签(理论上可以是任何Object)。

在这种情况下,您只需要存储一个String

假设您有以下代码:

Uri imageFilePath = Uri.parse("some/path/to/file.png");

现在,在ImageView上设置图像Uri时,请在此之后添加以下内容以设置其标签:

现在,在ImageView上设置图片的Uri时,添加以下代码来设置其标签:

imageView.setTag(imageFilePath.toString());

接着,当你要将它发送到服务器时,只需在ImageView上调用getTag()方法,就可以得到正确的文件位置。

例如:

String path = imageView.getTag().toString();

如果图像来自您的资源,则需要从资源中构建适当的路径(有关如何执行此操作,请参见此页面上miselking的答案)。


5
你可以尝试这个方法:
    Uri path = Uri.parse("android.resource://your.package.name/" + R.drawable.icon_usuario);
    String imgPath = path.toString();

"

"your.package.name"是您的包名称(例如:com.example.mypackage)。

您可以在Android中使用此路径,如下所示:

"
ivPerfil = (ImageView)findViewById(R.id.ivPerfil);
ivPerfil.setImageURI(path);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接