图像无法加载到图像中从URL查看

时间:2017-08-03 07:51:47

标签: android imageview picasso image-loading

我正在尝试加载此big size image 使用Picasoo库和所有其他库进入imageview,但它没有显示。它可以加载小图像,但不会产生上述大尺寸图像。 请帮我如何加载大小约1-2Mb的重图像。

private void setImagesUsingPicasso(final String URL,final ImageView imgVW) 
        {
             String url=URL;
              //Picasso.with(getApplicationContext()).load(url).fit().centerCrop().into(imgVW);
             profileProgress.setVisibility(View.VISIBLE);


            Picasso.with(this).load(url).into(new Target()
            {

                public void onBitmapLoaded ( Bitmap bitmap, Picasso.LoadedFrom from)
                {
                         profileProgress.setVisibility(View.INVISIBLE);

                    imgVW.setImageBitmap(bitmap);

                }

                @Override
                public void onBitmapFailed(Drawable arg0)
                {
                //Bitmap icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.powered_by_google_dark);
                //icon=getRoundedRectBitmap(icon, 100);
              // imgVW.setImageBitmap(R);

                //  setImagesUsingPicasso(URL,imgVW);

                }

                @Override
                public void onPrepareLoad(Drawable arg0) 
                {
                    Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.google_map_icon_white);
                    //icon=getRoundedRectBitmap(icon, 100);
                   // imgVW.setImageBitmap(icon);


                }
        });
         }      

3 个答案:

答案 0 :(得分:1)

使用大图像为我工作

Picasso.with(this).load(/*uri*/).resize(500, 500).centerInside().into(/*ImageView*/);

答案 1 :(得分:0)

您可以使用AsyncTask

从网址下载图片

2.如果您不想使用第三方库

,请执行此操作
 new DownloadImage(imamgeview).execute(url);

创建异步任务

public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;

public DownloadImage(ImageView bmImage) {
    this.bmImage = (ImageView ) bmImage;
}

protected Bitmap doInBackground(String... urls) {
    String urldisplay = urls[0];
    Bitmap mIcon11 = null;
    try {
        InputStream in = new java.net.URL(urldisplay).openStream();
        mIcon11 = BitmapFactory.decodeStream(in);
    } catch (Exception e) {
        Log.d("Error", e.getStackTrace().toString());

    }
    return mIcon11;
}

protected void onPostExecute(Bitmap result) {
    bmImage.setImageBitmap(result);
}
}

我希望它适用于您的情况

如果它不起作用,我建议您使用 **WebView**代替**ImageView**

答案 2 :(得分:0)

我建议你试试Glide,它比Picasso的内存效率更高,因为Picasso会在内存中加载完整的图像,而Glide加载它会调整大小。

同样,Glide使用RGB_565代替RGB_8888,就像Picasso一样,它可以提供稍高的高分辨率图像,但消耗的内存减少了约50%,因此这是您可能需要的权衡。

Glide也可以在官方谷歌应用中使用,就像我们一样。

最后,您可以使图像符合您想要的imageview比例,并且不会在其中加载完整图像,但是调整大小的版本(尽管您也可以在Picasso中执行此操作),如下所示:

Glide.with(context)
.load("your url")
.override(100, 200) //give resize dimension, you could calculate thos
.centerCrop() // scale to fill the ImageView
.into(yourImageView);

有关Glide的更多信息:Glide help

希望这有帮助,如果您有其他问题,请告诉我。 :)

更新

确保您在清单文件中导入了互联网使用,如下所示:

<uses-permission android:name="android.permission.INTERNET" />

我做了一个像这样简单的ImageView:

<ImageView
    android:id="@+id/iv_test"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

使用此版本导入Graide in Gradle:

compile group: 'com.github.bumptech.glide', name: 'glide', version: '3.3.1'

而不仅仅是使用我之前所说的:

private void loadImg() {
    ImageView ivTest = (ImageView) findViewById(R.id.iv_test);
    String url = "http://pir.alphasols.com/Client_Bostwana_BuilderWorld_AndroidApp/PictureFolder/BW%20Jul17%20Mend%20pg5%20COPY-1.png";
    Log.i("main","loading got called");
    Glide.with(this.getBaseContext())
            .load(url)
            .into(ivTest);
}

甚至没有使用覆盖,它有效!