我正在尝试加载此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);
}
});
}
答案 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);
}
甚至没有使用覆盖,它有效!