Когда я сделал снимок камерой на своем Pixel 3XL, он поворачивается на 90 градусов при отображении на следующей странице (в данном случае EditorActivity.class
)
Я попытался исправить это, просто добавив метод flipIMage, но он, похоже, ничего не делает ...
if(resultCode == RESULT_OK){
bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getPath()+ "/photoTemp.png");
flipIMage(bitmap);
Intent intent = new Intent(this, EditorActivity.class);
startActivity(intent);
}
flipIMage is;
public static Bitmap flipIMage(Bitmap bitmap) {
Matrix matrix = new Matrix();
int rotation = fixOrientation(bitmap);
matrix.postRotate(rotation);
matrix.preScale(-1, 1);
return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
}
Если это помогает, мой метод cameraClicked здесь;
public void cameraClicked(View view) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File tempFile = new File(Environment.getExternalStorageDirectory().getPath()+ "/photoTemp.png");
try {
tempFile.createNewFile();
Uri uri = FileProvider.getUriForFile(
this,
this.getApplicationContext()
.getPackageName() + ".provider", tempFile);
//install.setDataAndType(uri, mimeType);
takePictureIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(takePictureIntent, 2);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
fixOrientation
метод;
private static int fixOrientation(Bitmap bitmap) {
if (bitmap.getWidth() > bitmap.getHeight()) {
return 90;
}
return 0;
}
EditorActivity;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//
setContentView(R.layout.activity_editor);
Bitmap bitmap = MainActivity.bitmap;
//
btnDoneOrEdit = (Button) findViewById(R.id.btnDoneOrEdit);
btnChangeMask = (Button) findViewById(R.id.btnChangeMask);
editorImage = (EditorImage)findViewById(R.id.editorImage);
editorImage.setBitmapImage(bitmap);
editorImage.setTopPanel((LinearLayout) findViewById(R.id.topPanel));
editorImage.setBottomPanel((LinearLayout) findViewById(R.id.bottomPanel));
gridview_zombie = (GridView)findViewById(R.id.gridView_zombie);
linearcontent = (LinearLayout)findViewById(R.id.linearlayout_content);