1

キャンバスに描画する前に一時的に拡大縮小したい、既にデコードされたビットマップがあります。したがって、ファイルをデコードしてサイズを設定する前に問題はありません。既存のビットマップのサイズを維持し、キャンバスに描画する前にサイズを小さくしたいと思います。これは可能ですか?

Matrix postScale(sx, sy, px, py) を使用すると、正しくスケーリングされますが、正しく配置されません。そして canvas.drawBitmap には、私が見ることができるマトリックスと x & y 位置のオプションがありません。

助言がありますか?

4

1 に答える 1

3

コードは次のとおりです。

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;
}

注意:ビットマップをスケールに渡すと、新しい高さと幅になります。

于 2012-06-13T08:51:11.323 に答える