默认情况下,UIL不支持协议方案。您需要自己实现此支持。

22

你好,我正在从相机中捕获图像并将其保存到SD卡中,并通过Universal Image Loader进行加载,但每次都会出现错误,例如:

       09-20 14:38:22.617: E/ImageLoader(16626): 
      UIL doesn't support scheme(protocol) by default [/mnt/sdcard/temp_photobooth.png]. You should implement this support yourself (BaseImageDownloader.getStreamFromOtherSource(...))



     imgLoader.displayImage(Environment
                        .getExternalStorageDirectory().toString()
                        + File.separator + Const.TEMP_FILE, choosen_image);

有人能帮我吗?我需要做什么才能解决这个问题?

2个回答

41

如果您正在从SD卡加载图像,则应在路径前加上file:///

String imageUri = "http://example.com/image.png"; // from Web
String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
String imageUri = "content://media/external/audio/albumart/13"; // from content provider
String imageUri = "assets://image.png"; // from assets
String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)

所以你必须这样写:

imgLoader.displayImage("file:///"+Environment
    .getExternalStorageDirectory().toString() + File.separator + Const.TEMP_FILE, choosen_image);

UIL能否从内部存储加载图像?当我尝试使用context.getFilesDir()+"/"+"image.jpg"时,出现了相同的错误... - kort.es
2
@kort.es 尝试将 "file:///" + context.getFilesDir() +"/"+"image.jpg" 放入代码中。 - Siddhpura Amit
@Siddhpura Amit 很棒的答案。 - user3233280

0
lateinit var imageLoader:ImageLoader

in onCreate

val config =
        ImageLoaderConfiguration.Builder(mContext)
            .threadPoolSize(5)
            .threadPriority(Thread.MIN_PRIORITY + 2)
            .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
            .build()

    imageLoader = ImageLoader.getInstance()
    imageLoader.init(config);

用法:例如在回收视图绑定中使用:

var options : DisplayImageOptions?
val strFileName :String = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString()+"/FolderName/"+"filename.jpg"
        val imgFile = File(strFileName)

        if(strFileName!="null" && imgFile.exists()) {
            options = DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.ic_logo_white)
                .showImageForEmptyUri(R.drawable.ic_logo_white)
                .showImageOnFail(R.drawable.ic_logo_white)
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .considerExifParams(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .build()
            if (strFileName.contains("http")) {
                imageLoader.displayImage(
                    strFileName,
                    view.imageView,
                    options
                )
            } else {
                imageLoader.displayImage("file:///"+strFileName, view.imageView)
            }
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接