package Ġapp . rig s . ml kit . ui Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Matrix Ċ import Ġandroid . support . media . Ex if Interface Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ Ċ object ĠEx if Util Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRot ates Ġthe Ġbitmap Ġaccording Ġto Ġthe Ġorientation Ġwhich Ġcan Ġbe Ġobtained Ġfrom Ġthe ĠEx if ĠData Ġfrom Ġthe Ġimage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrotate Bitmap ( bitmap : ĠBitmap , Ġorientation : ĠInt ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatrix Ġ= ĠMatrix () ĊĠĠĠĠĠĠĠ Ġwhen Ġ( orientation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ NORMAL Ġ-> Ġreturn Ġbitmap ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ FLI P _ HORIZONTAL Ġ-> Ġmatrix . set Scale (- 1 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ ROT ATE _ 1 8 0 Ġ-> Ġmatrix . set Rotate ( 1 8 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ FLI P _ VERTICAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix . set Rotate ( 1 8 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix . post Scale (- 1 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ TRANS POSE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix . set Rotate ( 9 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix . post Scale (- 1 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ ROT ATE _ 9 0 Ġ-> Ġmatrix . set Rotate ( 9 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ TRANS VERSE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix . set Rotate (- 9 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix . post Scale (- 1 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ ROT ATE _ 2 7 0 Ġ-> Ġmatrix . set Rotate (- 9 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġbitmap ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbm Rot ated Ġ= ĠBitmap . create Bitmap ( bitmap , Ġ 0 , Ġ 0 , Ġbitmap . width , Ġbitmap . height , Ġmatrix , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġbitmap . recycle () ĊĠĠĠĠĠĠĠ Ġreturn Ġbm Rot ated ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUses Ġthe ĠEx if Ġdata Ġon Ġan Ġimage Ġto Ġget Ġthe Ġcorrect Ġorientation Ġof Ġthe Ġimage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Orientation ( inputStream : ĠInputStream ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġex if : ĠEx if Interface ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex if Ġ= ĠEx if Interface ( inputStream ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Tim ber . e ( e , Ġ" Exception Ġgetting ĠEx if Interface Ġinformation ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġex if ?. getAttribute Int ( Ex if Interface . TAG _ OR IENTATION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEx if Interface . OR IENTATION _ UNDEFINED ) Ġ?: ĠEx if Interface . OR IENTATION _ NORMAL ĊĠĠĠ Ġ} Ċ }