美文网首页程序员
Android kotlin压缩图片案例

Android kotlin压缩图片案例

作者: Android_开发 | 来源:发表于2019-03-26 23:29 被阅读0次
    image image

    很应用都有个人信息,个人信息就包含设置头像(很多自己的帅照或者PS之后的美女照就会网上放)如果Android本地图片保存较大,上传到服务器的时候比较耗时,一直加载中,最后有可能上传失败,让帅照上传不成功,导致心情不好,可能APP的评论就是差评,其实头像显示的不是很大,这时候为了性能及用户体验,Android你本地可以上传一张自己先压缩的图片,接下来看看在kotlin实现的图片压缩代码:

    一实现图片压缩

    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,"监听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,"监听imageview事件",Toast.LENGTH_LONG).show();
            })
        }
    }
    
    

    获取更多内容关注公众号:

    image image

    qxf323

    865618770

    相关文章

      网友评论

        本文标题:Android kotlin压缩图片案例

        本文链接:https://www.haomeiwen.com/subject/liiovqtx.html