【问题标题】:Android Universal Image Loader onProgressUpdate total value always 512000Android Universal Image Loader onProgressUpdate 总价值总是 512000
【发布时间】:2015-11-05 18:15:11
【问题描述】:

我正在使用 UIL,但图像大小始终为 512000 字节有问题!

这是我的配置:

Options decodingOptions = new Options();
        decodingOptions.inSampleSize = 1;
        DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
        .cacheInMemory(false)
        .decodingOptions(decodingOptions)
        .cacheOnDisk(true)
        .considerExifParams(true)
        .resetViewBeforeLoading(true)
        .imageScaleType(ImageScaleType.NONE)
        .bitmapConfig(Bitmap.Config.RGB_565)
        .build();

        ImageLoaderConfiguration config;
        config = new ImageLoaderConfiguration.Builder(getApplicationContext())
        .defaultDisplayImageOptions(defaultOptions)
        .denyCacheImageMultipleSizesInMemory()
        .build();

        ImageLoader.getInstance().init(config);

我是这样使用它的:

ImageLoader.getInstance().loadImage(imgUrl, null, null, new ImageLoadingListener() {

            @Override
            public void onLoadingStarted(String imageUri, View view) {

                    PB.setVisibility(View.VISIBLE);
                    PBText.setVisibility(View.VISIBLE);


            }

            @Override
            public void onLoadingFailed(String imageUri, View view,
                    FailReason failReason) {

                    PB.setVisibility(View.GONE);
                    PBText.setVisibility(View.GONE);


                switch (failReason.getType()) {
                case IO_ERROR:
                    message = mResources.getString(R.string.ioError);
                    break;
                case OUT_OF_MEMORY:
                    message = mResources.getString(R.string.outOfMemory);
                    break;
                case NETWORK_DENIED:
                    message = mResources.getString(R.string.networkDenied);
                    break;
                case UNKNOWN:
                    message = mResources.getString(R.string.unknownError);
                    break;
                case DECODING_ERROR:
                    message = mResources.getString(R.string.decodeError);
                    break;
                }


            }

            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    PB.setVisibility(View.GONE);
                    PBText.setVisibility(View.GONE);
                    fullScreenImage.setImageBitmap(loadedImage);

                }



            }


        }, new ImageLoadingProgressListener() {

            @Override
            public void onProgressUpdate(String imageUri, View view, int current,
                    int total) {
                //here the value of total is always 512000!

                if((total != 0)&&(current != 0)){
                    PB.setProgress(Math.round(100.0f * current / total));                   
                }
                PBText.setText((current/1024)+" KB / "+(total/1024)+" KB"); 

            }
        });

我正在从 php 发送图像:

header( 'Content-Type: image/jpg' );
readfile( $image_file );

以前可以正常工作,但现在不行了。我不知道为什么。 我正在使用最新的通用图像加载器 jar。

EDIT1:onProgressUpdate 中的当前值是正确的,它达到了文件的最终大小。

【问题讨论】:

    标签: android universal-image-loader


    【解决方案1】:

    这是因为标题中内容的大小为空。 服务器应将Content-Length 放在标头中。 例如,在 php 中,您应该像这样手动执行:

    <?php
        $file = "image.jpg"
        $size = filesize($file);
        header("Content-Type: image/jpeg");
        header("Content-length: $size");
        readfile($file);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 2012-11-01
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多