1

Matrix を使用してビットマップを回転させようとしましたが、ビットマップの位置が変更されている 90 度以外の角度が 90 度の場合は正常に動作します。

コードスニペット:

            Matrix matrix = new Matrix();
            matrix.postRotate(90);
            Bitmap map= Bitmap.createBitmap(resizedBitmap, 0, 0,resizedBitmap.getWidth(), resizedBitmap.getHeight(),matrix, true);

画像の位置を変えずに画像を回転させる方法を教えてください。

ありがとう。

4

2 に答える 2

2

Hii ImageView を使用している場合は、毎回このような新しいビットマップを作成するのではなく、ImageView のマトリックスを設定することをお勧めします

              Matrix matrix=new Matrix();
     img.setScaleType(ScaleType.MATRIX);   
     int height =  img.arrow.getHeight();
        int width =  img.arrow.getWidth();
    matrix.postRotate((float) angle, width/2,height/2);
     img.setImageMatrix(matrix);
于 2012-08-03T05:37:10.067 に答える
0

これは私のために働いた唯一のものです

private Bitmap rotateBitmap(Bitmap bitmap, int rotationAngleDegree){

        int w = bitmap.getWidth();
        int h = bitmap.getHeight();

        int newW=w, newH=h;
        if (rotationAngleDegree==90 || rotationAngleDegree==270){
            newW = h;
            newH = w;
        }
        Bitmap rotatedBitmap = Bitmap.createBitmap(newW,newH, bitmap.getConfig());
        Canvas canvas = new Canvas(rotatedBitmap);

        Rect rect = new Rect(0,0,newW, newH);
        Matrix matrix = new Matrix();
        float px = rect.exactCenterX();
        float py = rect.exactCenterY();
        matrix.postTranslate(-bitmap.getWidth()/2, -bitmap.getHeight()/2);
        matrix.postRotate(rotationAngleDegree);
        matrix.postTranslate(px, py);
        canvas.drawBitmap(bitmap, matrix, new Paint( Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG | Paint.FILTER_BITMAP_FLAG ));
        matrix.reset();

        return rotatedBitmap;
    }
于 2015-02-03T07:25:34.330 に答える