diff --git a/camera/camera.android.ts b/camera/camera.android.ts index 0d7bb80ac..30a8d46de 100644 --- a/camera/camera.android.ts +++ b/camera/camera.android.ts @@ -63,6 +63,21 @@ export var takePicture = function (options?): Promise { scaledSizeImage = bitmap; } + var ei = new android.media.ExifInterface(tempPicturePath); + var orientation = ei.getAttributeInt(android.media.ExifInterface.TAG_ORIENTATION, android.media.ExifInterface.ORIENTATION_NORMAL); + + switch (orientation) { + case android.media.ExifInterface.ORIENTATION_ROTATE_90: + scaledSizeImage = rotateBitmap(scaledSizeImage, 90); + break; + case android.media.ExifInterface.ORIENTATION_ROTATE_180: + scaledSizeImage = rotateBitmap(scaledSizeImage, 180); + break; + case android.media.ExifInterface.ORIENTATION_ROTATE_270: + scaledSizeImage = rotateBitmap(scaledSizeImage, 270); + break; + } + var imageSource: typeof imageSourceModule = require("image-source"); resolve(imageSource.fromNativeSource(scaledSizeImage)); @@ -102,4 +117,10 @@ var createDateTimeStamp = function () { date.getMinutes().toString() + date.getSeconds().toString(); return result; +} + +var rotateBitmap = function (source, angle) { + var matrix = new android.graphics.Matrix(); + matrix.postRotate(angle); + return android.graphics.Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); } \ No newline at end of file