2016-11-13 54 views
2

大的圖像,我試圖從URL加載一個大型高分辨率(3225x4800)圖像到滑翔的報業公司。我想加載的圖像是High Res Image安卓:滑翔沒有顯示從URL

String url = "http://www.businessweekmindanao.com/content/wp-content/uploads/2015/10/fitness-and-wellness-poster-final.jpg"; 

Glide.with(getActivity()).load(url).asBitmap().into(new SimpleTarget<Bitmap>() { 
    @Override 
    public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { 
     imageView.setImageBitmap(resource); 
    } 
}); 

我使用的是邁克·奧爾蒂斯」 TouchImageView從這裏所提供的解決方案:https://github.com/MikeOrtiz/TouchImageView/issues/135從URL時加載的資源。但它似乎只適用於小分辨率的圖像,並且不會加載高質量的圖像。

有一種替代解決方案,我從計算器嘗試:Android: not displayed ImageView with UIL and TouchImageView,其試圖修改麥克的庫的onMeasure()方法。它適用於:

Glide.with(getActivity()).load(url) 
       .into(imageViewPreview); 

的問題是它加載在非常低的分辨率的圖像。

有沒有一種方式來加載像高分辨率圖像:7480x3740例如利用滑翔TouchImageView?我怎麼做?

+0

請計算有多少字節,這將是在內存:7480x3740x4 – greenapps

+0

請文章的網址以這樣的方式,我們可以點擊鏈接查看的圖片。 – greenapps

+0

@greenapps感謝您的評論。該鏈接位於字符串變量中:http://www.businessweekmindanao.com/content/wp-content/uploads/2015/10/fitness-and-wellness-poster-final.jpg – OBL

回答

3

我發現,我的工作要求的解決方案。 override()方法可以做到這一點。爲目標分辨率設置更高的數字似乎是最終的解決方法,但數字越大,顯示圖像所需的時間就越長,因此實施預加載器/進度條將是明智之舉。

Glide.with(getContext()) 
    .asBitMap() //[for new glide versions] 
    .load(url) 
    //.asBitmap()[for older glide versions] 
    //.placeholder(R.drawable.default_placeholder) 
    .override(1600, 1600) // Can be 2000, 2000 
    .into(new BitmapImageViewTarget(imageViewPreview) { 
     @Override 
     public void onResourceReady(Bitmap drawable, GlideAnimation anim) { 
      super.onResourceReady(drawable, anim); 
      progressBar.setVisibility(View.GONE); 
     } 
    }); 

定製中心的預加載/進度佔位上的RelativeLayout XML指標:

<ProgressBar 
    android:id="@+id/progressBar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" /> 

這是整齊的,因爲另一個問題涉及有關滑翔加載圖像asBitmap()將不會顯示錯誤和預加載/進度佔位符指標:

Glide.with(getActivity()) 
    .load(url).asBitmap() 
    .placeholder() //<== will simply not work: 
    .error() // <== is also useless 
    .into(new SimpleTarget<Bitmap>() { 
@Override 
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { 
     imageView.setImageBitmap(resource); 
    } 
}); 

在我的研究,我也嘗試了畢加索的解決方案來處理高質量的圖像:

Picasso.with(getContext()) 
       .load(url) 
       .resize(1500, 0) 
       .placeholder(R.drawable.default_placeholder) 
       .error(R.drawable.download_error) 
       .into(imageViewPreview); 

最後,我很高興與Glide版本。

我希望這將是有益的,可能會面臨同樣的挑戰任何人。