I am trying to check the orientation of bitmap and flip it if there is a need, but I have error while applying the code. Here is my code while i am trying to flipp the image using ExifInterface:
@RequiresApi(api = Build.VERSION_CODES.N) public void flipping(Bitmap b) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); b.compress(Bitmap.CompressFormat.JPEG,100, bos); byte[] bitmapdata = bos.toByteArray(); ByteArrayInputStream bs = new ByteArrayInputStream(bitmapdata); try { ExifInterface exif = new ExifInterface(bs); int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); switch(orientation) { case ExifInterface.ORIENTATION_ROTATE_90: rotateImage(b, 90); break; case ExifInterface.ORIENTATION_ROTATE_180: rotateImage(b, 180); break; case ExifInterface.ORIENTATION_ROTATE_270: rotateImage(b, 270); break; case ExifInterface.ORIENTATION_NORMAL: default: break; } encoding(); } catch (IOException e) { e.printStackTrace(); } } public static Bitmap rotateImage(Bitmap source, float angle) { Matrix matrix = new Matrix(); matrix.postRotate(angle); return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); }
And here is the error:
java.lang.NoSuchMethodError: No direct method <init>(Ljava/io/InputStream;)V in class Landroid/media/ExifInterface; or its super classes (declaration of 'android.media.ExifInterface' appears in /system/framework/framework.jar) at com.sara.image_test.MainActivity.flipping(MainActivity.java:181) at com.sara.image_test.MainActivity.onActivityResult(MainActivity.java:66) at android.app.Activity.dispatchActivityResult(Activity.java:7165) at android.app.ActivityThread.deliverResults(ActivityThread.java:4994) at android.app.ActivityThread.handleSendResult(ActivityThread.java:5041) at android.app.ActivityThread.access$1600(ActivityThread.java:229) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1875) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:7325) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
for AndroidX use
androidx.exifinterface.media.ExifInterface
Import this dependency in build.gradle
:
implementation 'androidx.exifinterface:exifinterface:1.3.2'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With