Android kotlin壓縮圖片案例

image
image

很應用都有個人信息,個人信息就包含設置頭像(很多自己的帥照或者PS之后的美女照就會網(wǎng)上放)如果Android本地圖片保存較大,上傳到服務器的時候比較耗時,一直加載中,最后有可能上傳失敗,讓帥照上傳不成功,導致心情不好,可能APP的評論就是差評,其實頭像顯示的不是很大,這時候為了性能及用戶體驗,Android你本地可以上傳一張自己先壓縮的圖片,接下來看看在kotlin實現(xiàn)的圖片壓縮代碼:

一實現(xiàn)圖片壓縮

class MainActivity : AppCompatActivity() {

    private var path = Environment.getExternalStorageDirectory().absolutePath+"/gnw/wx.png"; //定義路徑  var是變量
    private val pathYa = Environment.getExternalStorageDirectory().absolutePath+"/gnw/wx2.png" //也可以使用常量定義

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        img1.setImageResource(R.mipmap.wx)    //不需要使用注解方式直接可以findViewByID 及賦值 是不是很直接
        img2 .setImageResource(R.mipmap.wx)
        img1.setOnClickListener(View.OnClickListener {
            Toast.makeText(this,"監(jiān)聽imageview事件",Toast.LENGTH_LONG).show();
        })

        setListener(img1)
       // bitmapCom1();
        bitmapCom2();

    }

    /**
     * 壓縮圖片方法1
     */
    fun  bitmapCom1() {
        Toast.makeText(this,"壓縮圖片",Toast.LENGTH_LONG).show();
         var bitmap: Bitmap;
         bitmap = BitmapFactory.decodeFile(path)
         try {

             var file = File(path)
             var leangth = file.length()
             var bl:Int = ((leangth/(1024*100)+1).toInt())
             var quality = 100/bl
             var  fileOutputStream = FileOutputStream(pathYa)
             bitmap.compress(Bitmap.CompressFormat.PNG, quality, fileOutputStream)

         }catch (e:Exception){
            e.printStackTrace()
         }

    }
    /**
     * 壓縮圖片方法12
     */
    fun bitmapCom2(){
        var by = ByteArrayOutputStream() //流不關閉是直接追加
        var quality = 100;
        var bitmap: Bitmap;
        bitmap = BitmapFactory.decodeFile(path)
        while (true){
            by.reset()
            bitmap .compress(Bitmap.CompressFormat.PNG,quality,by)
            var size = by.size()
            if (size>100*1024){
                quality -= 2
            }else{
              break
            }
        }

        var  fileOutputStream = FileOutputStream(pathYa)
        bitmap.compress(Bitmap.CompressFormat.PNG, quality, fileOutputStream)
    }


    fun setListener(view:View){
        view.setOnClickListener(View.OnClickListener {
            Toast.makeText(this,"監(jiān)聽imageview事件",Toast.LENGTH_LONG).show();
        })
    }
}

獲取更多內容關注公眾號:

image
image

qxf323

865618770

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容