如何从ImageView获取Uri路径?

时间:2017-08-17 23:48:13

标签: android imageview android-volley crop wallpaper

我正在尝试创建一个壁纸应用程序。所有图片都来自互联网。

在设置为背景之前,我需要裁剪图像。为此,我使用名为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);
}

}

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

1 个答案:

答案 0 :(得分:1)

所以你正在使用排球?我对Volley不太熟悉,这只是我的一些想法。

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

或者,您可以直接使用位图对象,而不是uri。

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

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