【问题标题】:How to share image using Android-Universal-Image-Loader?如何使用 Android-Universal-Image-Loader 共享图像?
【发布时间】:2017-09-08 06:45:11
【问题描述】:

如何使用 Android-Universal-Image-Loader 共享图像 我有一个通过 imageloader 加载的图像视图,但为图像加载器提供了一个 URL,我认为图像加载器已经完成将图像从 URL 写入磁盘然后显示它

如何在不将其重新写入磁盘的情况下共享它?

item_zoom_image_view 是 ImageView selectedItemImage 是一个具有包含 URL (http://...) 的属性的类。

这是我的图像加载器配置:

public void initImageLoader(Context context) {
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .cacheOnDisc().imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            context).threadPriority(Thread.NORM_PRIORITY - 2)
            .denyCacheImageMultipleSizesInMemory()
            .discCacheFileNameGenerator(new Md5FileNameGenerator())
            .defaultDisplayImageOptions(options)
            .memoryCache(new WeakMemoryCache())
            .denyCacheImageMultipleSizesInMemory()
            .tasksProcessingOrder(QueueProcessingType.LIFO).build();

    imgLoader = ImageLoader.getInstance();
    imgLoader.init(config);
}

这是我显示图像的方式

ImageLoader imgLoader = AppData.imgLoader;
if (!selectedItemImage.getImageURL().trim().equals("")) {
    imgLoader.displayImage(selectedItemImage.getImageURL(), item_zoom_image_view, new ImageLoadingListener() {
        @Override
        public void onLoadingStarted(String imageUri, View view) {
            Progress.ShowProgressDialog(true);
            currentImageURI = "";
        }

        @Override
        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
            item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers);
            Progress.HideProgressDialog();;
            currentImageURI = "";
        }

        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
            Progress.HideProgressDialog();;
            currentImageURI = imageUri;
        }

        @Override
        public void onLoadingCancelled(String imageUri, View view) {
            item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers);
            Progress.HideProgressDialog();;
            currentImageURI = "";
        }
    });
}
else
{
    item_zoom_image_view.setImageResource(R.drawable.ic_artificial_flowers);
    Progress.HideProgressDialog();;
    currentImageURI = "";
}

这是我分享图片的方式:

void ShareImg() {
    try {
        Uri bmpUri = Uri.parse(currentImageURI);
        if (bmpUri != null) {
            // Construct a ShareIntent with link to image
            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
            shareIntent.setType("image/*");
            // Launch sharing dialog for image
            startActivity(Intent.createChooser(shareIntent, "Share Image"));
        } else {
            // ...sharing failed, handle error
        }
    } catch (Exception e) {

    }
}

问题是我在显示图像时使用的 URI (currentImageURI) 不正确或者我不知道但它显示的是黑色图像

【问题讨论】:

    标签: android image imageview universal-image-loader share-intent


    【解决方案1】:

    您需要将位图保存在存储中才能共享。您无法共享从 url 下载的图像加载器的缓存图像

     @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap 
         loadedImage) {
            Progress.HideProgressDialog();;
            currentImageURI = imageUri;
                  loadedImage
    //save it in storage then share
        }
    

    【讨论】:

    • 为什么?我的意思是图像加载器已经提供了一个应该是正确的 imageUri,所以我可以使用它来共享加载的图像!使用我添加分享的方法(我刚刚更新了我的问题)
    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2014-11-14
    • 2012-12-13
    相关资源
    最近更新 更多