很应用都有个人信息,个人信息就包含设置头像(很多自己的帅照或者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(); }) }