Cleanup
This commit is contained in:
parent
71aa315f2a
commit
6246fd98c3
|
@ -33,42 +33,40 @@ import java.text.SimpleDateFormat
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.coroutines.CoroutineContext
|
|
||||||
|
|
||||||
internal class ImageCompressor @Inject constructor(
|
internal class ImageCompressor @Inject constructor(
|
||||||
@SessionDownloadsDirectory
|
@SessionDownloadsDirectory
|
||||||
private val sessionCacheDirectory: File
|
private val sessionCacheDirectory: File
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private val cacheFolder = File(sessionCacheDirectory, "MF")
|
private val cacheFolder = File(sessionCacheDirectory, "MF")
|
||||||
|
|
||||||
suspend fun compress(
|
suspend fun compress(
|
||||||
context: Context,
|
context: Context,
|
||||||
imageUri: Uri,
|
imageUri: Uri,
|
||||||
desiredWidth: Int = 612,
|
desiredWidth: Int,
|
||||||
desiredHeight: Int = 816,
|
desiredHeight: Int,
|
||||||
desiredQuality: Int = 80,
|
desiredQuality: Int = 80): Uri {
|
||||||
coroutineContext: CoroutineContext = Dispatchers.IO
|
return withContext(Dispatchers.IO) {
|
||||||
): Uri = withContext(coroutineContext) {
|
val compressedBitmap = BitmapFactory.Options().run {
|
||||||
val compressedBitmap = BitmapFactory.Options().run {
|
inJustDecodeBounds = true
|
||||||
inJustDecodeBounds = true
|
decodeBitmap(context, imageUri, this)
|
||||||
decodeBitmap(context, imageUri, this)
|
inSampleSize = calculateInSampleSize(outWidth, outHeight, desiredWidth, desiredHeight)
|
||||||
inSampleSize = calculateInSampleSize(outWidth, outHeight, desiredWidth, desiredHeight)
|
inJustDecodeBounds = false
|
||||||
inJustDecodeBounds = false
|
decodeBitmap(context, imageUri, this)?.let {
|
||||||
decodeBitmap(context, imageUri, this)?.let {
|
rotateBitmap(context, imageUri, it)
|
||||||
rotateBitmap(context, imageUri, it)
|
}
|
||||||
}
|
} ?: return@withContext imageUri
|
||||||
} ?: return@withContext imageUri
|
|
||||||
|
|
||||||
val destinationUri = createDestinationUri(context)
|
val destinationUri = createDestinationUri(context)
|
||||||
|
|
||||||
runCatching {
|
runCatching {
|
||||||
context.contentResolver.openOutputStream(destinationUri).use {
|
context.contentResolver.openOutputStream(destinationUri).use {
|
||||||
compressedBitmap.compress(Bitmap.CompressFormat.JPEG, desiredQuality, it)
|
compressedBitmap.compress(Bitmap.CompressFormat.JPEG, desiredQuality, it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return@withContext destinationUri
|
||||||
}
|
}
|
||||||
|
|
||||||
return@withContext destinationUri
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun rotateBitmap(context: Context, uri: Uri, bitmap: Bitmap): Bitmap {
|
private fun rotateBitmap(context: Context, uri: Uri, bitmap: Bitmap): Bitmap {
|
||||||
|
|
Loading…
Reference in New Issue