2014-07-25 2 views
14

У меня есть пользовательский вид (1066 x 738), и я передаю растровое изображение (720x343). Я хочу масштабировать растровое изображение, чтобы оно соответствовало настраиваемому представлению без превышения границы родителя.Изменение размера растрового изображения Android

enter image description here

Я хочу, чтобы достичь чего-то вроде этого:

enter image description here

Как я должен рассчитать размер растрового изображения?

Как рассчитать новую ширину/высоту:

public static Bitmap getScaledBitmap(Bitmap b, int reqWidth, int reqHeight) 
    { 
     int bWidth = b.getWidth(); 
     int bHeight = b.getHeight(); 

     int nWidth = reqWidth; 
     int nHeight = reqHeight; 

     float parentRatio = (float) reqHeight/reqWidth; 

     nHeight = bHeight; 
     nWidth = (int) (reqWidth * parentRatio); 

     return Bitmap.createScaledBitmap(b, nWidth, nHeight, true); 
    } 

Но я достичь это:

enter image description here

+0

Вы можете добавить флаг «scaleType» в XML вашего настраиваемого представления. http://developer.android.com/reference/android/widget/ImageView.ScaleType.html –

+0

Это не изображение! –

+0

А, я (ошибочно) предположил, что ваш пользовательский вид расширен ImageView ... моя ошибка –

ответ

58

Вы должны попытаться использовать матрицу преобразования, построенную для ScaleToFit.CENTER. Например:

Matrix m = new Matrix(); 
m.setRectToRect(new RectF(0, 0, b.getWidth(), b.getHeight()), new RectF(0, 0, reqWidth, reqHeight), Matrix.ScaleToFit.CENTER); 
return Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, true); 
+1

не работает для меня. Я попытался уменьшить размер изображения, в разрешениях, используя это, но не работал. – NarendraJi

+0

@DroidWormNarendra вы можете затем вызвать 'Bitmap.createScaledBitmap (out, reqWidth, reqHeight, false);', это уменьшит размер изображения. – zionpi

+0

@matiash, пожалуйста, посмотрите на этот номер http://stackoverflow.com/questions/42927337/scaling-bitmaps-of-huge-images-from-url-into-image-view-according-to-device- reso – Siddharth

Смежные вопросы