2012-06-26 77 views
2

我通常會下載尺寸較大的圖像,並使用imageview縮小圖像,但最近我試圖處理我的應用程序無法在較小的網絡連接上工作,所以我想知道如何增加一旦它到達設備,圖像的大小。我嘗試調整圖像大小,一旦它在圖像視圖中,但imageview將不會比原始圖像大。我確定這是一個非常簡單的方法來增加或放大設備上的圖像,但我還沒有遇到它。Android - 如何放大位圖

所以.....我該如何增加圖像的大小。編號喜歡炸開它,並在imageview中使用它,但我處理的圖像只有128X256和Id喜歡將它們擴展到約512X1024。

+1

你試圖用'機器人:scaleType = 「fitXY」'? – thepoosh

+0

我想我嘗試過使用不同的刻度類型,但他們似乎並沒有爲我的特殊需要而工作,除非我沒有正確使用它們 –

+0

好吧,'fitXY'意味着圖像將根據它所在視圖的邊界自行縮放,所以這就是你的刻度類型 – thepoosh

回答

5

嘗試使用這種方法:

public static Bitmap scaleBitmap(Bitmap bitmapToScale, float newWidth, float newHeight) { 
if(bitmapToScale == null) 
    return null; 
//get the original width and height 
int width = bitmapToScale.getWidth(); 
int height = bitmapToScale.getHeight(); 
// create a matrix for the manipulation 
Matrix matrix = new Matrix(); 

// resize the bit map 
matrix.postScale(newWidth/width, newHeight/height); 

// recreate the new Bitmap and set it back 
return Bitmap.createBitmap(bitmapToScale, 0, 0, bitmapToScale.getWidth(), bitmapToScale.getHeight(), matrix, true); } 

參考我的答案:如果你想手動縮放位圖ImageView OutofMemoryException

+0

感謝這個方法,我想這會是一件簡單的事情,但整天編程後我的大腦就會消失。我只是有一個關於你的方法的問題.....爲什麼你在調用matrix.postScale()時是否將新維度與舊維度分開?這不會使矩陣返回的值比我擴展圖像的目標小得多嗎? –

0

,有Bitmap.createScaledBitmap()方法,你可以使用這個。
如果您希望ImageView處理此問題,則必須將layout_width/layout_height設置爲wrap_content以外的值,否則將始終縮小到位圖的大小。然後,您需要將scaleType屬性更改爲實際縮放位圖的類型。

+1

我試圖使用這個,但試圖使用該方法來擴大或增加圖像的大小給我一個錯誤。這是關於不能縮放比原始圖像更大的東西。 –

0

或縮放圖像上下的功能更是一應俱全通過android.graphics庫:

Bitmap bitmapScaled = Bitmap.createScaledBitmap(Bitmap bitmapOrig, int widthNew, int heightNew, boolean filter);