diff --git a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/bitmap/Bitmap.kt b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/bitmap/Bitmap.kt index 25d8cb89c1..42ae1c8ba5 100644 --- a/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/bitmap/Bitmap.kt +++ b/libraries/androidutils/src/main/kotlin/io/element/android/libraries/androidutils/bitmap/Bitmap.kt @@ -64,7 +64,7 @@ fun BitmapFactory.Options.calculateInSampleSize(desiredWidth: Int, desiredHeight * Decodes the [inputStream] into a [Bitmap] and applies the needed rotation based on [orientation]. * This orientation value must be one of `ExifInterface.ORIENTATION_*` constants. */ -fun Bitmap.rotateToMetadataOrientation(orientation: Int): Bitmap { +fun Bitmap.rotateToExifMetadataOrientation(orientation: Int): Bitmap { val matrix = Matrix() when (orientation) { ExifInterface.ORIENTATION_ROTATE_270 -> matrix.postRotate(270f) diff --git a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/ImageCompressor.kt b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/ImageCompressor.kt index f14264c5d7..1076773873 100644 --- a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/ImageCompressor.kt +++ b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/ImageCompressor.kt @@ -13,7 +13,7 @@ import android.graphics.BitmapFactory import androidx.exifinterface.media.ExifInterface import io.element.android.libraries.androidutils.bitmap.calculateInSampleSize import io.element.android.libraries.androidutils.bitmap.resizeToMax -import io.element.android.libraries.androidutils.bitmap.rotateToMetadataOrientation +import io.element.android.libraries.androidutils.bitmap.rotateToExifMetadataOrientation import io.element.android.libraries.androidutils.file.createTmpFile import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.extensions.runCatchingExceptions @@ -78,7 +78,7 @@ class ImageCompressor @Inject constructor( options.inJustDecodeBounds = false val decodedBitmap = BitmapFactory.decodeStream(input, null, options) ?: error("Decoding Bitmap from InputStream failed") - val rotatedBitmap = decodedBitmap.rotateToMetadataOrientation(orientation) + val rotatedBitmap = decodedBitmap.rotateToExifMetadataOrientation(orientation) if (resizeMode is ResizeMode.Strict) { rotatedBitmap.resizeToMax(resizeMode.maxWidth, resizeMode.maxHeight) } else { diff --git a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/VideoCompressorConfig.kt b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/VideoCompressorConfig.kt index 1508a70c35..b3b0e66ccf 100644 --- a/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/VideoCompressorConfig.kt +++ b/libraries/mediaupload/impl/src/main/kotlin/io/element/android/libraries/mediaupload/impl/VideoCompressorConfig.kt @@ -81,8 +81,12 @@ internal class VideoResizer( ) { fun getOutputSize(inputSize: Size): Size { val resultMajor = min(inputSize.major(), maxSize) - val aspectRatio = inputSize.major().toFloat() / inputSize.minor().toFloat() - return Size(resultMajor, (resultMajor / aspectRatio).roundToInt()) + val aspectRatio = inputSize.width.toFloat() / inputSize.height.toFloat() + return if (inputSize.width > inputSize.height) { + Size(resultMajor, (resultMajor / aspectRatio).roundToInt()) + } else { + Size((resultMajor * aspectRatio).roundToInt(), resultMajor) + } } }