从imageview获取图像路径?

Fer*_*iva 1 android android-imageview

我有一个ImageView,我想得到图像的路径,并添加一个String.我想这样做是因为我需要将它发送到我的webservice,就像默认图像一样

我该怎么做 ?

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"
    />
Run Code Online (Sandbox Code Playgroud)

走这条路

ivPerfil = (ImageView)findViewById(R.id.ivPerfil);
Drawable img = getResources().getDrawable(R.drawable.icon_usuario);
String pathImage = img.toString();
Run Code Online (Sandbox Code Playgroud)

Cru*_*ceo 9

你不能直接获得由它引用的图像的路径ImageView,但是它有一些方法.

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

在这种情况下,它只是String你想要存储的.

所以,假设你有:

Uri imageFilePath = Uri.parse("some/path/to/file.png");
Run Code Online (Sandbox Code Playgroud)

现在,在设置图像Uri时,在ImageView添加之后设置其标记:

imageView.setTag(imageFilePath.toString());
Run Code Online (Sandbox Code Playgroud)

然后,当您实际将其发送到服务器时,只需getTag()在您的方法上调用该方法ImageView,您将获得正确的文件位置.

例如

String path = imageView.getTag().toString();
Run Code Online (Sandbox Code Playgroud)

但是,如果图像来自您的资产,则您将不得不从资源构建适当的路径(有关如何执行此操作,请参阅此页面上的miselking的答案).


mis*_*ing 5

你可以试试这个:

    Uri path = Uri.parse("android.resource://your.package.name/" + R.drawable.icon_usuario);
    String imgPath = path.toString();
Run Code Online (Sandbox Code Playgroud)

“your.package.name”是您的包的名称(即:com.example.mypackage)

你可以在 android 中使用这个路径,如下所示:

ivPerfil = (ImageView)findViewById(R.id.ivPerfil);
ivPerfil.setImageURI(path);
Run Code Online (Sandbox Code Playgroud)