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