@@ -380,6 +380,7 @@ object FileUtils {
380380
381381 return extension.contentEquals(" jpg" ) || extension.contentEquals(" jpeg" )
382382 || extension.contentEquals(" png" ) || extension.contentEquals(" webp" )
383+ || extension.contentEquals(" heic" ) || extension.contentEquals(" heif" )
383384 }
384385
385386 private fun getFileExtension (context : Context , uri : Uri ): String? {
@@ -397,20 +398,25 @@ object FileUtils {
397398 }
398399 }
399400
401+ private fun getCompressFormatBasedFileExtension (format : Bitmap .CompressFormat ): String {
402+ return when (format) {
403+ Bitmap .CompressFormat .PNG -> " png"
404+ Bitmap .CompressFormat .WEBP -> " webp"
405+ else -> " jpeg"
406+ }
407+ }
408+
400409 @JvmStatic
401410 fun compressImage (originalImageUri : Uri , compressionQuality : Int , context : Context ): Uri {
402411 val compressedUri: Uri
403412 try {
404413 context.contentResolver.openInputStream(originalImageUri).use { imageStream ->
405- val compressedFile = createImageFile(context, originalImageUri)
414+ val compressFormat = getCompressFormat(context, originalImageUri)
415+ val compressedFile = createImageFile(context, originalImageUri, compressFormat)
406416 val originalBitmap = BitmapFactory .decodeStream(imageStream)
407417 // Compress and save the image
408418 val fileOutputStream = FileOutputStream (compressedFile)
409- originalBitmap.compress(
410- getCompressFormat(context, originalImageUri),
411- compressionQuality,
412- fileOutputStream
413- )
419+ originalBitmap.compress(compressFormat, compressionQuality, fileOutputStream)
414420 fileOutputStream.flush()
415421 fileOutputStream.close()
416422 compressedUri = Uri .fromFile(compressedFile)
@@ -422,11 +428,11 @@ object FileUtils {
422428 }
423429
424430 @Throws(IOException ::class )
425- private fun createImageFile (context : Context , uri : Uri ): File {
431+ private fun createImageFile (context : Context , uri : Uri , compressFormat : Bitmap . CompressFormat ): File {
426432 val timeStamp = SimpleDateFormat (" yyyyMMdd_HHmmss" , Locale .getDefault()).format(Date ())
427433 val imageFileName = " IMAGE_" + timeStamp + " _"
428434 val storageDir = context.cacheDir
429- return File .createTempFile(imageFileName, " ." + getFileExtension(context, uri ), storageDir)
435+ return File .createTempFile(imageFileName, " ." + getCompressFormatBasedFileExtension(compressFormat ), storageDir)
430436 }
431437
432438 /* *
0 commit comments