zetbaitsu/Cekrek

View on GitHub
cekrek/src/main/java/id/zelory/cekrek/extension/BitmapExt.kt

Summary

Maintainability
A
0 mins
Test Coverage
package id.zelory.cekrek.extension

import android.graphics.Bitmap
import java.io.File
import java.io.FileOutputStream

/**
 * Created on : August 02, 2020
 * Author     : zetbaitsu
 * Name       : Zetra
 * GitHub     : https://github.com/zetbaitsu
 */
fun Bitmap.saveToFile(
    destination: File,
    format: Bitmap.CompressFormat = destination.compressFormat(),
    quality: Int = 100
) : File {
    destination.parentFile?.mkdirs()
    var fileOutputStream: FileOutputStream? = null
    try {
        fileOutputStream = FileOutputStream(destination.absolutePath)
        compress(format, quality, fileOutputStream)
    } finally {
        fileOutputStream?.run {
            flush()
            close()
        }
    }
    return destination
}

internal fun File.compressFormat() = when (extension.toLowerCase()) {
    "png" -> Bitmap.CompressFormat.PNG
    "webp" -> Bitmap.CompressFormat.WEBP
    else -> Bitmap.CompressFormat.JPEG
}