Мое изображение вращается, когда я использую камеру. После захвата изображения я отправлю это изображение в другое действие, используя Intent и установив этот рисунок в качестве фона Layout, но захват изображения в ландшафте повернет изображение.Почему изображение поворачивается после съемки с камеры и отправляется на другое мероприятие?
0
A
ответ
0
Вы можете решить эту проблему с помощью ExitInterface
показано ниже:
private void setPic(Uri contentUri) throws IOException {
// Get the dimensions of the View
int targetW = uploadedImage.getWidth();
int targetH = uploadedImage.getHeight();
// Get the dimensions of the bitmap
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
// Decode the image file into a Bitmap sized to fill the View
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = calculateInSampleSize(bmOptions, targetW, targetH);
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
bitmap = rotateImageIfRequired(bitmap, contentUri);
bitmap = ThumbnailUtils.extractThumbnail(bitmap, 750, 750);
uploadedImage.setImageBitmap(bitmap);
}
Эта функция где растровый декодируется, основываясь на пути в телефоне, то тогда вызов rotateImageIfRequired()
который будет определять, какие образ должен вращаться, прежде чем он будет установлен на фон вашего макета. В этом случае uploadedImage
- это ваш макет.
private Bitmap rotateImageIfRequired(Bitmap img, Uri contentUri) throws IOException {
ExifInterface ei = new ExifInterface(contentUri.getPath());
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
return rotateImage(img, 90);
case ExifInterface.ORIENTATION_ROTATE_180:
return rotateImage(img, 180);
case ExifInterface.ORIENTATION_ROTATE_270:
return rotateImage(img, 270);
default:
return img;
}
}
Эта функция определяет, какая ориентация изображения после ее декодирования и до ее установки.
private static Bitmap rotateImage(Bitmap img, int degree) {
Matrix matrix = new Matrix();
matrix.postRotate(degree);
Bitmap rotatedImg = Bitmap.createBitmap(img, 0, 0, img.getWidth(), img.getHeight(), matrix, true);
img.recycle();
return rotatedImg;
}
Эта функция поворачивает изображение и возвращает новое изображение.
Надеюсь, это поможет.
+0
вообще не помогло? –
можете ли вы опубликовать часть своего кода? –
Использование скольжения для отображения изображения –