圖片的保存
mPath = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString() + "/"
btn_save.setOnClickListener {
val bitmap = ll_info.drawingCache
val file_path = "$mPath${DateUtil.nowDateTime}.png"
FileUtil.saveImage(file_path, bitmap)
}
override fun onStart() {
super.onStart()
ll_info.isDrawingCacheEnabled = true
}
override fun onStop() {
super.onStop()
ll_info.isDrawingCacheEnabled = false
}
object FileUtil {
fun saveImage(path: String, bitmap: Bitmap) {
try {
val file = File(path)
//outputStream獲取文件的輸出流對象
val fos: OutputStream = file.outputStream()
//壓縮格式為JPEG圖像娩井,壓縮質(zhì)量為80%
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, fos)
fos.flush()
fos.close()
} catch (e: Exception) {
e.printStackTrace()
}
}
}
圖片的讀取
- 方式一
//readBytes讀取字節(jié)數(shù)組形式的文件內(nèi)容
val bytes = File(file_path).readBytes()
//decodeByteArray從字節(jié)數(shù)組解析圖片
val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
- 方式二
//inputStream獲取文件的輸入流對象
val fis = File(file_path).inputStream()
//decodeStream從輸入流解析圖片
val bitmap = BitmapFactory.decodeStream(fis)
fis.close()
- 方式三
//decodeFile從指定路徑解析圖片
val bitmap = BitmapFactory.decodeFile(file_path)
文件遍歷
遍歷某個文件下的所有圖片文件
var fileNames: MutableList<String> = mutableListOf()
val fileTree: FileTreeWalk = File(mPath).walk()
fileTree.maxDepth(1) //需遍歷的目錄層級為1毕泌,即無需檢查子目錄
.filter { it.isFile } //只挑選文件,不處理文件夾
.filter { it.extension in listOf("png", "jpg") } //選擇擴展名為png和jpg的圖片文件
.forEach { fileNames.add(it.name) } //循環(huán)處理符合條件的文件