package Ġcom . ak ex orc ist . im ager es ize . resize Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ Ċ class ĠImage Res izer Ġ{ ĊĠĠĠ Ġfun Ġresize ( ĊĠĠĠĠĠĠĠ Ġpreferred Width : ĠInt , ĊĠĠĠĠĠĠĠ Ġpreferred Height : ĠInt , ĊĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠ Ġresize Type : ĠResize Type , ĊĠĠĠĠĠĠĠ Ġskip L arger Resize : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBitmap Factory . Options (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Just Decode Bounds Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode File ( path , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Sample Size Ġ= Ġcalculate In Sample Size ( this , Ġpreferred Width , Ġpreferred Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Just Decode Bounds Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! skip L arger Resize Ġ|| Ġpreferred Width Ġ<= Ġout Width Ġ&& Ġpreferred Height Ġ<= Ġout Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ratio Ġ= Ġout Width . toFloat () Ġ/ Ġout Height . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Ratio Ġ= Ġpreferred Width . toFloat () Ġ/ Ġpreferred Height . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( resize Type Ġ== ĠResize Type . Fill Ġ&& Ġout Ratio Ġ> Ġreq Ratio ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( resize Type Ġ== ĠResize Type . Crop Ġ&& Ġout Ratio Ġ<= Ġreq Ratio ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Density Ġ= Ġout Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Target Density Ġ= Ġpreferred Width Ġ* Ġin Sample Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( resize Type Ġ== ĠResize Type . Fill Ġ&& Ġout Ratio Ġ<= Ġreq Ratio ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( resize Type Ġ== ĠResize Type . Crop Ġ&& Ġout Ratio Ġ> Ġreq Ratio ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Density Ġ= Ġout Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Target Density Ġ= Ġpreferred Height Ġ* Ġin Sample Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode File ( path , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Original Image Size ( path : ĠString ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBitmap Factory . Options (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Just Decode Bounds Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode File ( path , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout Width Ġto Ġout Height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate In Sample Size ( ĊĠĠĠĠĠĠĠ Ġoptions : ĠBitmap Factory . Options , ĊĠĠĠĠĠĠĠ Ġreq Width : ĠInt , ĊĠĠĠĠĠĠĠ Ġreq Height : ĠInt ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( width : ĠInt , Ġheight : ĠInt ) Ġ= Ġoptions . run Ġ{ Ġout Width Ġto Ġout Height Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġin Sample Size Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( height Ġ> Ġreq Height Ġ|| Ġwidth Ġ> Ġreq Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Height : ĠInt Ġ= Ġheight Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Width : ĠInt Ġ= Ġwidth Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( half Height Ġ/ Ġin Sample Size Ġ>= Ġreq Height Ġ&& Ġhalf Width Ġ/ Ġin Sample Size Ġ>= Ġreq Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Sample Size Ġ*= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġin Sample Size ĊĠĠĠ Ġ} Ċ } Ċ