package Ġcom . tiny t ong t ong . android study . bitmap . compress Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Matrix Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . tiny t ong t ong . android study . R Ċ import Ġcom . tiny t ong t ong . android study . bitmap . options . Bitmap Options Util Ċ import Ġcom . tiny t ong t ong . tiny utils . Screen Utils Ċ import Ġkotlinx . android . synt hetic . main . activity _ bitmap _ compress .* Ċ import Ġjava . io . ByteArray OutputStream Ċ Ċ /** Ċ Ġ* Ġ@ Description : Ġbitmap åİĭç¼© Ċ Ġ* Ġhttps :// blog . cs dn . net / H arry We as ley / article / details / 5 1 9 5 5 4 6 7 Ċ Ġ* Ġhttps :// www . jian shu . com / p / eef 3 da ee ec bc Ċ Ġ* Ġhttps :// juejin . im / post / 5 ec 7 3 0 2 c 5 1 8 8 2 5 4 3 4 0 6 2 f 4 9 7 # heading - 7 Ċ Ġ* Ġ@ Author Ġw ang jian zh ou Ċ Ġ* Ġ@ Date Ġ 2 0 2 0 / 6 / 5 Ġ 1 0 : 0 6 ĠAM Ċ Ġ* Ġ@ Version Ċ Ġ*/ Ċ class ĠBitmap Compress Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkb _ size Ġ= Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠ Ġval Ġmb _ size Ġ= Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ bitmap _ compress ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ å±ķç¤º åİŁ åĽ¾ ĊĠĠĠĠĠĠĠ Ġval Ġj pg Is Ġ= Ġassets . open (" ma omi . jpg ") ĊĠĠĠĠĠĠĠ Ġval Ġbmp Origin J pg Ġ= ĠBitmap Factory . decode Stream ( jpg Is ) ĊĠĠĠĠĠĠĠ Ġval Ġdesc Origin J pg Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp Origin J pg . height }, \ n width :${ bmp Origin J pg . width }, \ n allocation Byte Count :${ bmp Origin J pg . allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp Origin J pg . byte Count } byte ,\ n row Bytes :${ bmp Origin J pg . row Bytes } byte ,\ nd ensity :${ bmp Origin J pg . density }" ĊĠĠĠĠĠĠĠ Ġtv Origin J pg Info . text Ġ= Ġ"${ tv Origin J pg Info . text }$ desc Origin J pg " ĊĠĠĠĠĠĠĠ Ġiv Origin J pg . setImage Bitmap ( bmp Origin J pg ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġpng Is Ġ= Ġassets . open (" Persistent Cookie Store 1 . png ") ĊĠĠĠĠĠĠĠ Ġval Ġbmp Origin P ng Ġ= ĠBitmap Factory . decode Stream ( png Is ) ĊĠĠĠĠĠĠĠ Ġval Ġdesc Origin P ng Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp Origin P ng . height }, \ n width :${ bmp Origin P ng . width }, \ n allocation Byte Count :${ bmp Origin P ng . allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp Origin P ng . byte Count } byte ,\ n row Bytes :${ bmp Origin P ng . row Bytes } byte ,\ nd ensity :${ bmp Origin P ng . density }" ĊĠĠĠĠĠĠĠ Ġtv Origin P ng Info . text Ġ= Ġ"${ tv Origin P ng Info . text }$ desc Origin P ng " ĊĠĠĠĠĠĠĠ Ġiv Origin P ng . setImage Bitmap ( bmp Origin P ng ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġj pg ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 ãĢģ éĢļè¿ĩ quality åİĭç¼© ï¼Į è´¨ éĩı åİĭç¼© ãĢĤ ĊĠĠĠĠĠĠĠ Ġ// Ġ è´¨ éĩı åİĭç¼© ä¸įä¼ļ åĩı å°ĳ åĽ¾çīĩ çļĦ åĥı ç´ł ï¼Į å®ĥ æĺ¯åľ¨ ä¿ĿæĮģ åĥı ç´ł çļĦ åīį æıĲ ä¸ĭ æĶ¹åıĺ åĽ¾çīĩ çļĦ ä½į æ·± åıĬ éĢı æĺİ åº¦ çŃī ï¼Į æĿ¥ è¾¾ åĪ° åİĭç¼© åĽ¾çīĩ çļĦ çĽ®çļĦ ãĢĤ åĽ¾çīĩ çļĦ éķ¿ ï¼Į å®½ ï¼Į åĥı ç´ł éĥ½ ä¸į åıĺ ï¼Į éĤ£ä¹Ī bitmap æīĢ åįł åĨħåŃĺ å¤§å°ı æĺ¯ ä¸įä¼ļ åıĺ çļĦ ãĢĤ ĊĠĠĠĠĠĠĠ Ġ// Ġ è¿ĻéĩĮ æĶ¹åıĺ çļĦæĺ¯ bitmap å¯¹åºĶçļĦ åŃĹèĬĤ æķ°ç»Ħ çļĦ å¤§å°ı ï¼Į éĢĤ åĲĪ åİ» ä¼łéĢĴ äºĮ è¿ĽåĪ¶ çļĦ åĽ¾çīĩ æķ°æį® ï¼Į æ¯Ķå¦Ĥ å¾®ä¿¡ åĪĨäº« ãĢĤ ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// blog . cs dn . net / H arry We as ley / article / details / 5 1 9 5 5 4 6 7 ĊĊĠĠĠĠĠĠĠ Ġbtn Quality J pg . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbyte array Ġ= Ġget Bytes From Compress Bitmap ( bmp Origin J pg , Ġ 3 2 Ġ* Ġ 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp Quality J pg Ġ= ĠBitmap Factory . decode ByteArray ( byte array , Ġ 0 , Ġbyte array . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc Quality J pg Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp Quality J pg . height }, \ n width :${ bmp Quality J pg . width }, \ n allocation Byte Count :${ bmp Quality J pg . allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp Quality J pg . byte Count } byte ,\ n row Bytes :${ bmp Quality J pg . row Bytes } byte ,\ nd ensity :${ bmp Quality J pg . density }, \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte array :${ byte array . size }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Quality J pg Info . text Ġ= Ġ" J pg è¿Ľè¡Į Quality åİĭç¼© åĲİçļĦ ä¿¡æģ¯ ï¼ļ $ desc Quality J pg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Quality J pg . setImage Bitmap ( bmp Quality J pg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ãĢģ æĽ´æĶ¹ Bitmap . Config æł¼å¼ı ĊĠĠĠĠĠĠĠ Ġbtn B mp Config J pg . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoption Ġ= ĠBitmap Factory . Options () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption . in Preferred Config Ġ= ĠBitmap . Config . ARGB _ 4 4 4 4 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoption . in Preferred Config Ġ= ĠBitmap . Config . RGB _ 5 6 5 Ġ// Ġå¯¹ éĢı æĺİ åº¦ æ²¡ è¦ģæ±Ĥ çļĦè¯Ŀ åı¯ä»¥ è¯ķ ä¸Ģä¸ĭ rgb _ 5 6 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp B mp Config J pg Ġ= ĠBitmap Factory . decode Stream ( assets . open (" ma omi . jpg "), Ġnull , Ġoption ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc B mp Config J pg Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp B mp Config J pg ?. height }, \ n width :${ bmp B mp Config J pg ?. width }, \ n allocation Byte Count :${ bmp B mp Config J pg ?. allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp B mp Config J pg ?. byte Count } byte ,\ n row Bytes :${ bmp B mp Config J pg ?. row Bytes } byte ,\ nd ensity :${ bmp B mp Config J pg ?. density }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv B mp Config J pg Info . text Ġ= Ġ" J pg éĢļè¿ĩ Bitmap . Config åİĭç¼© åĲİçļĦ ä¿¡æģ¯ ï¼ļ $ desc B mp Config J pg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv B mp Config J pg . setImage Bitmap ( bmp B mp Config J pg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 3 ãĢģ éĩĩ æł· çİĩ åİĭç¼© ï¼Į æĶ¹åıĺ Bitmap å¤§å°ı ãĢĤ å·² çŁ¥ çĽ®æłĩ ImageView å¤§å°ı ĊĠĠĠĠĠĠĠ Ġbtn In Sample Size J pg . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġasset FileDescriptor Ġ= Ġassets . open Fd (" ma omi . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile InputStream Ġ= Ġasset FileDescriptor . create InputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp In Sample Size J pg Ġ= ĠBitmap Options Util . decode Sample d Bitmap FromFile Stream ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile InputStream , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Utils . dip 2 px ( this , Ġ 8 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Utils . dip 2 px ( this , Ġ 4 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc B mp Config J pg Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp In Sample Size J pg ?. height }, \ n width :${ bmp In Sample Size J pg ?. width }, \ n allocation Byte Count :${ bmp In Sample Size J pg ?. allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp In Sample Size J pg ?. byte Count } byte ,\ n row Bytes :${ bmp In Sample Size J pg ?. row Bytes } byte ,\ nd ensity :${ bmp In Sample Size J pg ?. density }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv In Sample Size J pg Info . text Ġ= Ġ" J pg éĢļè¿ĩ in Sample Size åİĭç¼© åĲİçļĦ ä¿¡æģ¯ ï¼ļ $ desc B mp Config J pg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv In Sample Size J pg . setImage Bitmap ( bmp In Sample Size J pg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 4 ãĢģ éĢļè¿ĩ mart ix è¿Ľè¡Į åİĭç¼© ãĢĤ Bitmap . create Bitmap æĪĸèĢħ Bitmap . create Scaled Bitmap æĸ¹æ³ķ ĊĠĠĠĠĠĠĠ Ġbtn Matrix J pg . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatrix Ġ= ĠMatrix () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix . set Scale ( 0 . 1 f , Ġ 0 . 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp Matrix J pg Ġ= ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbmp Origin J pg , Ġ 0 , Ġ 0 , Ġbmp Origin J pg . getWidth (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbmp Origin J pg . getHeight (), Ġmatrix , Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBitmap . create Scaled Bitmap åĨħéĥ¨ ä¹Ł ä¼ļ ä½¿çĶ¨ Matrix è¿Ľè¡Į ç¼© æĶ¾ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp Matrix J pg Ġ= ĠBitmap . create Scaled Bitmap ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbmp Origin J pg , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Utils . dip 2 px ( this , Ġ 8 0 f ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Utils . dip 2 px ( this , Ġ 4 5 f ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc B mp Config J pg Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp Matrix J pg ?. height }, \ n width :${ bmp Matrix J pg ?. width }, \ n allocation Byte Count :${ bmp Matrix J pg ?. allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp Matrix J pg ?. byte Count } byte ,\ n row Bytes :${ bmp Matrix J pg ?. row Bytes } byte ,\ nd ensity :${ bmp Matrix J pg ?. density }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Matrix J pg Info . text Ġ= Ġ" J pg éĢļè¿ĩ Matrix åİĭç¼© åĲİçļĦ ä¿¡æģ¯ ï¼ļ $ desc B mp Config J pg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Matrix J pg . setImage Bitmap ( bmp Matrix J pg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġpng ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 ãĢģ éĢļè¿ĩ quality åİĭç¼© ï¼Į è´¨ éĩı åİĭç¼© ãĢĤ ĊĠĠĠĠĠĠĠ Ġ// Ġ è´¨ éĩı åİĭç¼© ä¸įä¼ļ åĩı å°ĳ åĽ¾çīĩ çļĦ åĥı ç´ł ï¼Į å®ĥ æĺ¯åľ¨ ä¿ĿæĮģ åĥı ç´ł çļĦ åīį æıĲ ä¸ĭ æĶ¹åıĺ åĽ¾çīĩ çļĦ ä½į æ·± åıĬ éĢı æĺİ åº¦ çŃī ï¼Į æĿ¥ è¾¾ åĪ° åİĭç¼© åĽ¾çīĩ çļĦ çĽ®çļĦ ãĢĤ åĽ¾çīĩ çļĦ éķ¿ ï¼Į å®½ ï¼Į åĥı ç´ł éĥ½ ä¸į åıĺ ï¼Į éĤ£ä¹Ī bitmap æīĢ åįł åĨħåŃĺ å¤§å°ı æĺ¯ ä¸įä¼ļ åıĺ çļĦ ãĢĤ ĊĠĠĠĠĠĠĠ Ġ// Ġ è¿ĻéĩĮ æĶ¹åıĺ çļĦæĺ¯ bitmap å¯¹åºĶçļĦ åŃĹèĬĤ æķ°ç»Ħ çļĦ å¤§å°ı ï¼Į éĢĤ åĲĪ åİ» ä¼łéĢĴ äºĮ è¿ĽåĪ¶ çļĦ åĽ¾çīĩ æķ°æį® ï¼Į æ¯Ķå¦Ĥ å¾®ä¿¡ åĪĨäº« ãĢĤ ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// blog . cs dn . net / H arry We as ley / article / details / 5 1 9 5 5 4 6 7 ĊĊĠĠĠĠĠĠĠ Ġbtn Quality P ng . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbyte array Ġ= Ġget Bytes From Compress Bitmap ( bmp Origin P ng , Ġ 3 2 Ġ* Ġ 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp Quality P ng Ġ= ĠBitmap Factory . decode ByteArray ( byte array , Ġ 0 , Ġbyte array . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc Quality P ng Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp Quality P ng . height }, \ n width :${ bmp Quality P ng . width }, \ n allocation Byte Count :${ bmp Quality P ng . allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp Quality P ng . byte Count } byte ,\ n row Bytes :${ bmp Quality P ng . row Bytes } byte ,\ nd ensity :${ bmp Quality P ng . density }, \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte array :${ byte array . size }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Quality P ng Info . text Ġ= Ġ" P ng è¿Ľè¡Į Quality åİĭç¼© åĲİçļĦ ä¿¡æģ¯ ï¼ļ $ desc Quality P ng " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Quality P ng . setImage Bitmap ( bmp Quality P ng ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ãĢģ æĽ´æĶ¹ Bitmap . Config æł¼å¼ı ĊĠĠĠĠĠĠĠ Ġbtn B mp Config P ng . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoption Ġ= ĠBitmap Factory . Options () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption . in Preferred Config Ġ= ĠBitmap . Config . ARGB _ 4 4 4 4 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoption . in Preferred Config Ġ= ĠBitmap . Config . RGB _ 5 6 5 Ġ// Ġå¯¹ éĢı æĺİ åº¦ æ²¡ è¦ģæ±Ĥ çļĦè¯Ŀ åı¯ä»¥ è¯ķ ä¸Ģä¸ĭ rgb _ 5 6 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp B mp Config P ng Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Stream ( assets . open (" Persistent Cookie Store 1 . png "), Ġnull , Ġoption ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc B mp Config P ng Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp B mp Config P ng ?. height }, \ n width :${ bmp B mp Config P ng ?. width }, \ n allocation Byte Count :${ bmp B mp Config P ng ?. allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp B mp Config P ng ?. byte Count } byte ,\ n row Bytes :${ bmp B mp Config P ng ?. row Bytes } byte ,\ nd ensity :${ bmp B mp Config P ng ?. density }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv B mp Config P ng Info . text Ġ= Ġ" P ng éĢļè¿ĩ Bitmap . Config åİĭç¼© åĲİçļĦ ä¿¡æģ¯ ï¼ļ $ desc B mp Config P ng " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv B mp Config P ng . setImage Bitmap ( bmp B mp Config P ng ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 3 ãĢģ éĩĩ æł· çİĩ åİĭç¼© ï¼Į æĶ¹åıĺ Bitmap å¤§å°ı ãĢĤ å·² çŁ¥ çĽ®æłĩ ImageView å¤§å°ı ĊĠĠĠĠĠĠĠ Ġbtn In Sample Size P ng . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġasset FileDescriptor Ġ= Ġassets . open Fd (" Persistent Cookie Store 1 . png ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile InputStream Ġ= Ġasset FileDescriptor . create InputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp In Sample Size P ng Ġ= ĠBitmap Options Util . decode Sample d Bitmap FromFile Stream ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile InputStream , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc B mp Config P ng Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp In Sample Size P ng ?. height }, \ n width :${ bmp In Sample Size P ng ?. width }, \ n allocation Byte Count :${ bmp In Sample Size P ng ?. allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp In Sample Size P ng ?. byte Count } byte ,\ n row Bytes :${ bmp In Sample Size P ng ?. row Bytes } byte ,\ nd ensity :${ bmp In Sample Size P ng ?. density }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv In Sample Size P ng Info . text Ġ= Ġ" P ng éĢļè¿ĩ in Sample Size åİĭç¼© åĲİçļĦ ä¿¡æģ¯ ï¼ļ $ desc B mp Config P ng " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv In Sample Size P ng . setImage Bitmap ( bmp In Sample Size P ng ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 4 ãĢģ éĢļè¿ĩ mart ix è¿Ľè¡Į åİĭç¼© ãĢĤ Bitmap . create Bitmap æĪĸèĢħ Bitmap . create Scaled Bitmap æĸ¹æ³ķ ĊĠĠĠĠĠĠĠ Ġbtn Matrix P ng . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatrix Ġ= ĠMatrix () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatrix . set Scale ( 0 . 2 f , Ġ 0 . 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp Matrix P ng Ġ= ĠBitmap . create Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbmp Origin P ng , Ġ 0 , Ġ 0 , Ġbmp Origin P ng . getWidth (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbmp Origin P ng . getHeight (), Ġmatrix , Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBitmap . create Scaled Bitmap åĨħéĥ¨ ä¹Ł ä¼ļ ä½¿çĶ¨ Matrix è¿Ľè¡Į ç¼© æĶ¾ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp Matrix P ng Ġ= ĠBitmap . create Scaled Bitmap ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbmp Origin P ng , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Utils . dip 2 px ( this , Ġ 8 0 f ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Utils . dip 2 px ( this , Ġ 4 5 f ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc B mp Config P ng Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" height :${ bmp Matrix P ng ?. height }, \ n width :${ bmp Matrix P ng ?. width }, \ n allocation Byte Count :${ bmp Matrix P ng ?. allocation Byte Count } byte ,\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Count :${ bmp Matrix P ng ?. byte Count } byte ,\ n row Bytes :${ bmp Matrix P ng ?. row Bytes } byte ,\ nd ensity :${ bmp Matrix P ng ?. density }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Matrix P ng Info . text Ġ= Ġ" P ng éĢļè¿ĩ Matrix åİĭç¼© åĲİçļĦ ä¿¡æģ¯ ï¼ļ $ desc B mp Config P ng " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiv Matrix P ng . setImage Bitmap ( bmp Matrix P ng ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°Ĩ Bitmap çļĦ åŃĹèĬĤ æµģ åİĭç¼© ä¸º çĽ®æłĩ å¤§å°ı ĊĠĠĠĠ Ġ* Ġ@ target Size Ġ Ġ åįķä½į ä¸º Byte ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Bytes From Compress Bitmap ( ĊĠĠĠĠĠĠĠ Ġbitmap : ĠBitmap , ĊĠĠĠĠĠĠĠ Ġtarget Size : ĠInt ĊĠĠĠ Ġ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġvar Ġquality Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . PNG , Ġquality , Ġba os ) ĊĠĠĠĠĠĠĠ Ġvar Ġbytes Ġ= Ġba os . toByteArray () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( bytes . size Ġ> Ġtarget Size Ġ&& Ġquality Ġ>= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquality Ġ-= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( quality Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquality Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éĩį ç½® ï¼Į ä¸į çĦ¶ ä¼ļ ç´ ¯ åĬł ĊĠĠĠĠĠĠĠĠĠĠĠ Ġba os . reset () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . JPEG , Ġquality , Ġba os ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Ġ= Ġba os . toByteArray () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġba os . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbytes ĊĠĠĠ Ġ} Ċ }