Android kotlin压缩图片列子

简介: Android kotlin压缩图片列子

很应用都有个人信息,个人信息就包含设置头像(很多自己的帅照或者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();
            })
        }
    相关文章
    |
    3月前
    |
    安全 Java Android开发
    为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
    为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
    171 0
    为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
    |
    设计模式 Android开发 Kotlin
    Android经典实战之Kotlin委托模式和by关键字
    本文介绍了Kotlin中`by`关键字在类及属性委托中的运用,通过实例展示了如何利用类委托简化接口实现,以及如何借助标准与自定义属性委托管理属性的读写操作。通过`by`关键字的支持,Kotlin使得委托模式的实现更为直观且高效。
    283 4
    |
    缓存 安全 Android开发
    Android经典实战之用Kotlin泛型实现键值对缓存
    本文介绍了Kotlin中泛型的基础知识与实际应用。泛型能提升代码的重用性、类型安全及可读性。文中详细解释了泛型的基本语法、泛型函数、泛型约束以及协变和逆变的概念,并通过一个数据缓存系统的实例展示了泛型的强大功能。
    112 2
    |
    7月前
    |
    Android开发 开发者 Kotlin
    Android实战经验之Kotlin中快速实现MVI架构
    MVI架构通过单向数据流和不可变状态,提供了一种清晰、可预测的状态管理方式。在Kotlin中实现MVI架构,不仅提高了代码的可维护性和可测试性,还能更好地应对复杂的UI交互和状态管理。通过本文的介绍,希望开发者能够掌握MVI架构的核心思想,并在实际项目中灵活应用。
    310 8
    |
    Android开发 Kotlin
    Android经典面试题之Kotlin的==和===有什么区别?
    本文介绍了 Kotlin 中 `==` 和 `===` 操作符的区别:`==` 用于比较值是否相等,而 `===` 用于检查对象身份。对于基本类型,两者行为相似;对于对象引用,`==` 比较值相等性,`===` 检查引用是否指向同一实例。此外,还列举了其他常用比较操作符及其应用场景。
    287 94
    |
    8月前
    |
    编译器 Android开发 开发者
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
    Lambda表达式和匿名函数都是Kotlin中强大的特性,帮助开发者编写简洁而高效的代码。理解它们的区别和适用场景,有助于选择最合适的方式来解决问题。希望本文的详细讲解和示例能够帮助你在Kotlin开发中更好地运用这些特性。
    145 9
    |
    11月前
    |
    存储 前端开发 测试技术
    Android kotlin MVVM 架构简单示例入门
    Android kotlin MVVM 架构简单示例入门
    172 1
    |
    11月前
    |
    调度 Android开发 开发者
    构建高效Android应用:探究Kotlin多线程优化策略
    【10月更文挑战第11天】本文探讨了如何在Kotlin中实现高效的多线程方案,特别是在Android应用开发中。通过介绍Kotlin协程的基础知识、异步数据加载的实际案例,以及合理使用不同调度器的方法,帮助开发者提升应用性能和用户体验。
    180 4
    |
    11月前
    |
    JSON 调度 数据库
    Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
    234 1
    |
    安全 Java Android开发
    探索安卓应用开发的新趋势:Kotlin和Jetpack Compose
    在安卓应用开发领域,随着技术的不断进步,新的编程语言和框架层出不穷。Kotlin作为一种现代的编程语言,因其简洁性和高效性正逐渐取代Java成为安卓开发的首选语言。同时,Jetpack Compose作为一个新的UI工具包,提供了一种声明式的UI设计方法,使得界面编写更加直观和灵活。本文将深入探讨Kotlin和Jetpack Compose的特点、优势以及如何结合使用它们来构建现代化的安卓应用。
    346 11

    热门文章

    最新文章