1. 程式人生 > >Glide 入門到精通之四——圖片縮放和調整大小

Glide 入門到精通之四——圖片縮放和調整大小

圖片調整大小和縮放是有趣的,在實際應用中也是很重要的

用 resize(x,y) 調整圖片大小

通常情況下,如果你的伺服器或者 API 提供的影象是你需要的精確尺寸,這時是完美的情況下,在記憶體小號和影象質量之間的權衡。

在和 Picasso 比較後,Glide 有更加高效的記憶體管理。Glide 自動限制了圖片的尺寸在快取和記憶體中,並給到 ImageView 需要的尺寸。Picasso 也有這樣的能力,但需要呼叫 fit() 方法。對於 Glide,如果圖片不會自動適配到 ImageView,呼叫 override(horizontalSize, verticalSize) 。這將在圖片顯示到 ImageView之前重新改變圖片大小。

Glide
    .with(context)
    .load(UsageExampleListViewAdapter.eatFoodyImages[0])
    .override(600, 200) // resizes the image to these dimensions (in pixel). does not respect aspect ratio
    .into(imageViewResize);

當你還沒有目標 view 去知道尺寸的時候,這個選項也可能是有用的。比如,如果 App 想要在閃屏介面預熱快取,它還不能測量 ImageView 的尺寸。然而,如果你知道這個圖片多少大,用 override 去提供明確的尺寸。

縮放影象

現在,對於任何影象操作,調整大小真的能讓長寬比失真並且醜化影象顯示。在你大多數的使用場景中,你想要避免發生這種情況。Glide 提供了一般變化去處理影象顯示。提供了兩個標準選項:centerCropfitCenter

CenterCrop

CenterCrop()是一個裁剪技術,即縮放影象讓它填充到 ImageView 界限內並且裁剪額外的部分。ImageView 可能會完全填充,但影象可能不會完整顯示。

Glide
    .with(context)
    .load(UsageExampleListViewAdapter.eatFoodyImages
[0]) .override(600, 200) // resizes the image to these dimensions (in pixel) .centerCrop() // this cropping technique scales the image so that it fills the requested bounds and then crops the extra. .into(imageViewResizeCenterCrop);

FitCenter

fitCenter() 是裁剪技術,即縮放影象讓影象都測量出來等於或小於 ImageView 的邊界範圍。該影象將會完全顯示,但可能不會填滿整個 ImageView。

Glide
    .with(context)
    .load(UsageExampleListViewAdapter.eatFoodyImages[0])
    .override(600, 200)
    .fitCenter() 
    .into(imageViewResizeFitCenter);

如果你對CenterCrop和FitCenter,想象不出是個什麼操作,看看這個簡短的介紹。

展望

在這篇部落格中,你學會如何去對影象的大小和顯示進行調整。這對建立一個很棒的應用非常具有幫助。在我們進入 Glide 進階課程之前,我們來看一個 Glide 很獨特的功能:顯示 Gif 和 video。

關注我的公眾號,輕鬆瞭解和學習更多技術
這裡寫圖片描述