Android - 旋转位图

时间:2015-09-27 20:45:16

标签: android bitmap

我需要将图片旋转为肖像。我用exif编写了这个方法:

    private static Bitmap rotateBitmap(Bitmap sourceBitmap) throws java.io.IOException{
    int width = sourceBitmap.getWidth();
    int height = sourceBitmap.getHeight();
    Matrix matrix = new Matrix();
        ExifInterface ei = new ExifInterface(photoPath);
        int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
        switch(orientation) {
            case ExifInterface.ORIENTATION_NORMAL:
                break;
            case ExifInterface.ORIENTATION_ROTATE_90:
                matrix.postRotate(90);
                break;
            case ExifInterface.ORIENTATION_ROTATE_180:
                matrix.postRotate(180);
                break;
            case ExifInterface.ORIENTATION_ROTATE_270:
                matrix.postRotate(270);
                break;
        }
    if (orientation == ExifInterface.ORIENTATION_ROTATE_90 || orientation == ExifInterface.ORIENTATION_ROTATE_270) {
        return Bitmap.createBitmap(sourceBitmap, 0, 0, width, height, matrix, true);
    }
    else {
        return Bitmap.createBitmap(sourceBitmap, 0, 0, width, height, matrix, true);
    }
}

对于ORIENTATION_ROTATE_180或ORIENTATION_NORMAL,此方法可以正常工作。

对于ORIENTATION_ROTATE_270或ORIENTATION_ROTATE_90,此方法会在宽度维度中拉伸图片。我试图用高度切换宽度,应用程序崩溃了。

我需要这种方法来旋转位图,并且不会损失它之前的质量或比例。

我该怎么做?

0 个答案:

没有答案