【问题标题】:UIL doesn't support scheme(protocol) by default You should implement this support yourselfUIL 默认不支持方案(协议)你应该自己实现这个支持
【发布时间】:2013-09-25 14:47:48
【问题描述】:

您好,我正在从相机捕获图像并将其保存到 SDCARD 并通过 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);

谁能帮我做些什么?

【问题讨论】:

    标签: android universal-image-loader


    【解决方案1】:
    lateinit var imageLoader:ImageLoader
    

    在创建时

    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)
                }
            }
    

    【讨论】:

      【解决方案2】:

      如果您从 SDCARD 加载图像,则应在路径前加上 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 尝试把 "file:///" + context.getFilesDir() +"/"+"image.jpg"
      • @Siddhpura Amit 很好的答案
      猜你喜欢
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多