package Ġcom . sample . edge detection Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Base 6 4 Ċ import Ġandroid . widget . Seek Bar Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . sample . edge detection . model . Image Ċ import Ġkotlinx . android . synt hetic . main . activity _ contrast .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ rotate . cancel Btn Ċ import Ġkotlinx . android . synt hetic . main . activity _ rotate . decision Btn Ċ import Ġkotlinx . android . synt hetic . main . activity _ rotate . imageView Ċ import Ġorg . json . JSONArray Ċ import Ġset Contrast Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġkotlin . concurrent . thread Ċ Ċ class ĠContr ast Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsp : ĠSharedPreferences ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdecoded Img : ĠBitmap ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġimages : ĠArrayList < Image > ĊĠĠĠ Ġprivate Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġcurrent Val : ĠFloat = Ġ 1 F ĊĠĠĠ Ġprivate Ġval Ġgson Ġ= ĠGson () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ contrast ) ĊĠĠĠĠĠĠĠ Ġsp Ġ= Ġget SharedPreferences ( SP NAME , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġset Image () ĊĠĠĠĠĠĠĠ Ġset Btn Listener () ĊĠĠĠĠĠĠĠ Ġset Slider () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠãĤ ¿ ãĥĥãĥĹ ãģķãĤĮãģŁ çĶ» åĥı ãģ® ãĤ¤ãĥ³ ãĥĩ ãĥĥãĤ¯ãĤ¹ ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġintent . getInt Extra ( INDEX , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġsp . getString ( IMAGE _ ARRAY , Ġnull ) ĊĠĠĠĠĠĠĠ Ġimages Ġ= Ġjson To Image Array ( json !! ) ĊĠĠĠĠĠĠĠ Ġval Ġb 6 4 Image Ġ= Ġimages [ index ]. b 6 4 ĊĠĠĠĠĠĠĠ Ġval Ġimage Bytes Ġ= ĠBase 6 4 . decode ( b 6 4 Image , ĠBase 6 4 . DEFAULT ) ĊĠĠĠĠĠĠĠ Ġdecoded Img Ġ= ĠBitmap Factory . decode ByteArray ( image Bytes , Ġ 0 , Ġimage Bytes . size ) ĊĠĠĠĠĠĠĠ ĠimageView . setImage Bitmap ( decoded Img ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Btn Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġcancel Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Disable Btn s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav To ImageList Sc rn () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdecision Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto Disable Btn s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Updated Image () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav To ImageList Sc rn () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Disable Btn s () Ġ{ ĊĠĠĠĠĠĠĠ Ġcancel Btn . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġdecision Btn . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Updated Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġdecoded Img Ġ= Ġdecoded Img . set Contrast ( current Val ) !! ĊĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġdecoded Img . compress ( Bitmap . Compress Format . JPEG , Ġ 1 0 0 , Ġba os ) ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġba os . toByteArray () ĊĠĠĠĠĠĠĠ Ġval Ġupdated Img Ġ= ĠBase 6 4 . encode ToString ( b , ĠBase 6 4 . DEFAULT ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠImage ( updated Img ) ĊĠĠĠĠĠĠĠ Ġimages [ index ] Ġ= Ġimage ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġsp . edit () ĊĠĠĠĠĠĠĠ Ġeditor . putString ( IMAGE _ ARRAY , Ġgson . toJson ( images )). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Slider () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcontrast Ġ= Ġ 1 F ĊĠĠĠĠĠĠĠ Ġslider . progress Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġslider . max Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ Ġslider . setOn Seek Bar ChangeListener ( object : ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĢ¤ å¤īæĽ´ æĻĤ ãģ« åĳ¼ ãģ° ãĤĮãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ 2 0 0 Ġ- Ġprogress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcontrast ãģ® æľī åĬ¹ ç¯Ħ åĽ ² ãģ¯ 0 .. 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥĩ ãĥķãĤ© ãĥ« ãĥĪ ãģ¯ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrast Ġ= Ġvalue / 1 0 0 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Val Ġ= Ġcontrast ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoded Img . set Contrast ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrast ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãģ¤ ãģ¾ ãģ¿ ãĤ¿ ãĥĥ ãĥģ æĻĤ ãģ« åĳ¼ ãģ° ãĤĮãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ãĥī ãĥ© ãĥĥ ãĤ° ãĤ¹ãĤ¿ ãĥ¼ãĥĪ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ãģ¤ ãģ¾ ãģ¿ ãĥª ãĥª ãĥ¼ãĤ¹ æĻĤ ãģ« åĳ¼ ãģ° ãĤĮãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ãĥª ãĥª ãĥ¼ãĤ¹ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnav To ImageList Sc rn () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠImage List Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( INDEX , Ġindex ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ }