如何从 ImageView 获取 Uri 路径?

How to get the Uri path from a ImageView?

我正在尝试创建壁纸应用程序。图片均来自网络

在设置为背景之前,我需要裁剪图像。为此,我使用了一个名为 AndroidImageCropper 的 API。 API 需要一个 URI 对象来执行裁剪。

如何从 ImageView 获取 Uri?因为我的图片来自网络。图像不在可绘制文件夹中。我很困惑。也许你们可以帮助我。

public class MainActivity extends AppCompatActivity {

private NetworkImageView imageView;
private Uri mCropImageUri;
public static final String URL_PHOTO = "http://cdn.wonderfulengineering.com/wp-content/uploads/2016/02/iron-man-wallpaper-42-610x1084.jpg";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageView = (NetworkImageView) findViewById(R.id.image_view);

    // Singleton for Volley API, Load image from internet
    ImageLoader loader = MySingleton.getInstance(this).getImageLoader();
    loader.get(URL_PHOTO, ImageLoader.getImageListener(imageView, R.drawable.temp_picture, android.R.drawable.ic_dialog_alert));

    imageView.setImageUrl(URL_PHOTO, loader);

    // Put the image on URI object
    // #################################
    // ###    mCropImageUri =  <--   ###
    // #################################

}

// Action for my button
public void cropImage(View view) {
    // API to crop an image
    CropImage.activity(mCropImageUri)
            .start(this);
}

}

你对我有什么建议吗? 谢谢

所以您正在使用 Volley?我对 Volley 不是很熟悉,只是我的一些想法。

图像下载到Android设备后,尝试找到文件的绝对路径并使用android.net.Uri.fromFile从图像中获取一个uri .

否则,您可以直接使用 Bitmap 对象,而不是 uri。


好的,经过一番调查,我认为你有两个解决方案。

  1. 使用 volley 将图像下载为文件,而不使用 ImageLoader。这样就很容易得到图片的文件uri。
  2. 对于Android-Image-Cropper,您可以使用Activity或使用View(参考here)。您可以在ImageLoadingListener的方法onLoadingComplete中获取图片的Bitmap对象。然后使用com.theartofdev.edmodo.cropper.CropImageView裁剪图片。