package Ġo up son . ap ng . chunks Ċ Ċ class ĠI HDR Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcor ps Size Ġ= Ġ- 1 ĊĊĠĠĠ Ġvar Ġi hdr Cor ps Ġ= Ġbyte ArrayOf () ĊĊĠĠĠ Ġvar Ġpng Width Ġ= Ġ- 1 ĊĠĠĠ Ġvar Ġpng Height Ġ= Ġ- 1 ĊĊĠĠĠ Ġfun Ġparse IH DR ( byteArray : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠbyteArray . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFind ĠI HDR Ġchunk ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( byteArray [ i ] Ġ== Ġ 0 x 4 9 . to Byte () Ġ&& ĠbyteArray [ i Ġ+ Ġ 1 ] Ġ== Ġ 0 x 4 8 . to Byte () Ġ&& ĠbyteArray [ Ġi Ġ+ Ġ 2 Ġ] Ġ== Ġ 0 x 4 4 . to Byte () Ġ&& ĠbyteArray [ Ġi Ġ+ Ġ 3 Ġ] Ġ== Ġ 0 x 5 2 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġlength Ġof Ġthe Ġcor ps Ġof Ġthe Ġchunk ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlength String Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbyteArray . copyOf Range ( i Ġ- Ġ 4 , Ġi ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlength String Ġ+= ĠString . format ("% 0 2 x ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcor ps Size Ġ= Ġlength String . to Long ( 1 6 ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġwidth Ġof Ġthe Ġpng ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpng width Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbyteArray . copyOf Range ( i Ġ+ Ġ 4 , Ġi Ġ+ Ġ 8 ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpng width Ġ+= ĠString . format ("% 0 2 x ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpng Width Ġ= Ġpng width . to Long ( 1 6 ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġheight Ġof Ġthe Ġpng ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpng height Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbyteArray . copyOf Range ( i Ġ+ Ġ 8 , Ġi Ġ+ Ġ 1 2 ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpng height Ġ+= ĠString . format ("% 0 2 x ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpng Height Ġ= Ġpng height . to Long ( 1 6 ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ ih dr Cor ps Ġ= ĠArrayList < Byte >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbyteArray . copyOf Range ( i Ġ+ Ġ 4 , Ġi Ġ+ Ġcor ps Size Ġ+ Ġ 4 ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ ih dr Cor ps . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi hdr Cor ps Ġ= Ġ_ ih dr Cor ps . toByteArray () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }