1

ビットマップを引き伸ばさずに幅 (または高さ) を増やす方法はありますか? 基本的に、200x100 のビットマップがあり、左に 50 (白/透明) ピクセル、右に 50 ピクセルを追加して正方形 (200x200) にしたいと考えています。

このビットマップを画面に描画したくないので、理想的には、変換マトリックスを「スマートな」方法などで使用する必要がありますが、理解できません...

4

1 に答える 1

3

次のようなことを試すことができます:

        // creating a dummy bitmap
        Bitmap source = Bitmap.createBitmap(100, 200, Bitmap.Config.ARGB_8888);
        Bitmap background;
        Canvas canvas;

        if(source.getHeight() == source.getWidth()) // do nothing
            return;

        // create a new Bitmap with the bigger side (to get a square)
        if(source.getHeight() > source.getWidth()) {
            background = Bitmap.createBitmap(source.getHeight(), source.getHeight(), Bitmap.Config.ARGB_8888);
            canvas = new Canvas(background);
            // draw the source image centered
            canvas.drawBitmap(source, source.getHeight()/4, 0, new Paint());
        } else {
            background = Bitmap.createBitmap(source.getWidth(), source.getWidth(), Bitmap.Config.ARGB_8888);
            canvas = new Canvas(background);
            // draw the source image centered
            canvas.drawBitmap(source, 0, source.getWidth()/4, new Paint());
        }

        source.recycle();
        canvas.setBitmap(null);
        // update the source image
        source = background;

注: 黒い枠は画像の一部ではありません。画像の実際のサイズを確認し、黒やソース画像の色 (常に中央に描画される) と区別するために、背景色として濃い赤を選択しました。

Canvas に描画すると、画面に表示されなくなります。コードをテストするためだけに ImageView を使用しました。

w=200,h=100 に対して得られる出力は次のとおりです。

ここに画像の説明を入力

w=100,h=200 に対して得られる出力は次のとおりです。

ここに画像の説明を入力

于 2012-09-03T04:32:52.083 に答える