2012-06-13 3 views
0

У меня уже декодированное растровое изображение, которое я хотел бы временно масштабировать, прежде чем рисовать его на холсте. Поэтому для декодирования файла и установки размера до этого не может быть и речи. Я хотел бы сохранить размер существующего растрового изображения и просто масштабировать его до меньшего размера, прежде чем рисовать его на холсте. Это возможно?Как масштабировать уже существующее растровое изображение в android?

используя Matrix postScale (sx, sy, px, py) правильно масштабирует его, но не устанавливает его правильно. И canvas.drawBitmap не имеет опции с матрицей и x & y позиция из того, что я вижу.

Любые предложения?

ответ

2

Вот код:

public static Bitmap scaleBitmap(Bitmap bitmap, int width, int height) { 
    final int bitmapWidth = bitmap.getWidth(); 
    final int bitmapHeight = bitmap.getHeight(); 

    final float scale = Math.min((float) width/(float) bitmapWidth, 
      (float) height/(float) bitmapHeight); 

    final int scaledWidth = (int) (bitmapWidth * scale); 
    final int scaledHeight = (int) (bitmapHeight * scale); 

    final Bitmap decoded = Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true); 
    final Canvas canvas = new Canvas(decoded); 

    return decoded; 
} 

Пожалуйста, обратите внимание: Пропустите растрового масштабироваться и это новая высота и ширина.

+0

Это сработало отлично, спасибо! :) –

+0

Могу ли я нарисовать это растровое изображение на существующем растровом изображении? Если да, то как? Если НЕТ, что может быть возможным решением для этого? – Shrikant