从图像视图获取图像路径?

getting an image path from a imageview?

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

我该怎么做?

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();

你可以试试这个:

    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);

您无法直接获取 ImageView 引用的图像的路径,但有一些方法可以绕过它。

由于您在设置图片时清楚地知道图像的路径(因为您无法在不知道的情况下设置它),因此您可以选择设置 View's 标签(技术上可以可以是任何 Object).

在这种情况下,它只是您要存储的 String

假设您有:

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

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

imageView.setTag(imageFilePath.toString());

然后,当您真正要将它发送到服务器时,只需调用 ImageView 上的 getTag() 方法,您就会获得正确的文件位置。

例如

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

不过,如果图像来自您的资产,您将不得不从资源构建适当的路径(请参阅本页上的 Miselking 的回答以了解如何执行此操作)。