I am using the Camera 2 API.
I want to get the orientation of the image after taking the picture and correct it to the correct position, but I can't find a good way to do it.
Currently, we are correcting the orientation as follows.
public ImageStore(Image image, File file, Context con, int cameraDirect){
mImage=image;
mFile = file;
This.context=con;
This.camDirection=cameraDirect;
}
@ Override
public void run() {
Bitmap bmp = null;
ByteBuffer buffer=mImage.getPlanes()[0].getBuffer();
byte [ ] bytes = new byte [buffer.remaining()];
buffer.get(bytes);
try{
bmp = BitmapFactory.decodeByteArray (bytes, 0, bytes.length, null);
}catch(Exceptione){
e.printStackTrace();
}
Matrix m;
if(bmp.getWidth()>bmp.getHeight()){
if(camDirection==FRONT_CAMERA){
m = new Matrix();
m.setRotate(270);
bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
} else{
m = new Matrix();
m.setRotate(90);
bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
}
}
}
According to the above method, it may not work depending on the model, so if possible, I would like to be able to obtain the current orientation.
I wanted to use ExifInterface, but I couldn't get it because it wasn't saved in a file.
If you are familiar with this, please take care of me.
add
I tried to force myself to solve it, but I solved myself.
I didn't want to leave the photos I took in the gallery, but I wanted the Exif information, so I temporarily saved it in the gallery, retrieved it again from the gallery, and obtained the Exif information.
It's a little unreasonable to delete the image from the gallery once you get the Exif information, but I chose this specification.
I look forward to working with you again if there is a good way.
When the shooting is done (TakePicture?), how about getting the direction of the device and using it as a basis?
//Example code to write below the Activity class.
introtation=this.getWindowManager().getDefaultDisplay().getRotation();
switch(rotation){
caseSurface.ROTATION_0:return0;
caseSurface.ROTATION_90:return90;
caseSurface.ROTATION_180:return180;
caseSurface.ROTATION_270:return270;
}
return 0;
© 2024 OneMinuteCode. All rights reserved.