8

これが私のコードです

        //
        // reading an image captured using phone camera. Orientation of this
        // image is always return value 6 (ORIENTATION_ROTATE_90) no matter if
        // it is captured in landscape or portrait mode
        //
        Bitmap bmp = BitmapFactory.decodeFile(imagePath.getAbsolutePath());

        //
        // save as : I am compressing this image and writing it back. Orientation 
        //of this image always returns value 0 (ORIENTATION_UNDEFINED)
        imagePath = new File(imagePath.getAbsolutePath().replace(".jpg", "_1.jpg"));



        FileOutputStream fos0 = new FileOutputStream(imagePath);
        boolean b = bmp.compress(CompressFormat.JPEG, 10, fos0);
        fos0.flush();
        fos0.close();
        fos0 = null;

圧縮して保存した後、ExifInterfaceは0(ORIENTATION_UNDEFINED)を返しますが、画像は90度回転します。任意のポインタ、ソース画像の向きを保持するにはどうすればよいですか。この場合は6(またはORIENTATION_ROTATE_90)です。

ありがとう。

4

1 に答える 1

0

次のコードは、イメージの角度をその で返しますORIENTATION

public static float rotationForImage(Context context, Uri uri) {
        if (uri.getScheme().equals("content")) {
        String[] projection = { Images.ImageColumns.ORIENTATION };
        Cursor c = context.getContentResolver().query(
                uri, projection, null, null, null);
        if (c.moveToFirst()) {
            return c.getInt(0);
        }
    } else if (uri.getScheme().equals("file")) {
        try {
            ExifInterface exif = new ExifInterface(uri.getPath());
            int rotation = (int)exifOrientationToDegrees(
                    exif.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                            ExifInterface.ORIENTATION_NORMAL));
            return rotation;
        } catch (IOException e) {
            Log.e(TAG, "Error checking exif", e);
        }
    }
        return 0f;
    }

    private static float exifOrientationToDegrees(int exifOrientation) {
    if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_90) {
        return 90;
    } else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_180) {
        return 180;
    } else if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_270) {
        return 270;
    }
    return 0;
}
}
于 2012-12-17T14:09:22.723 に答える