diff --git a/CHANGES.md b/CHANGES.md index edaa8b3c01..58daa4b8e4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,7 @@ Bugfix: - Fix opening a permalink: the targeted event is displayed twice (#556) - Fix opening a permalink paginates all the history up to the last event (#282) - after login, the icon in the top left is a green 'A' for (all communities) rather than my avatar (#267) + - Picture uploads are unreliable, pictures are shown in wrong aspect ratio on desktop client (#517) Translations: - diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/ImageInfo.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/ImageInfo.kt index 729bc604c1..40651d0aa8 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/ImageInfo.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/ImageInfo.kt @@ -42,16 +42,6 @@ data class ImageInfo( */ @Json(name = "size") val size: Int = 0, - /** - * Not documented - */ - @Json(name = "rotation") val rotation: Int = 0, - - /** - * Not documented - */ - @Json(name = "orientation") val orientation: Int = 0, - /** * Metadata about the image referred to in thumbnail_url. */ diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt index 519a686570..9ed2dbad97 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt @@ -17,6 +17,7 @@ package im.vector.matrix.android.internal.session.room.send import android.media.MediaMetadataRetriever +import androidx.exifinterface.media.ExifInterface import com.zhuinden.monarchy.Monarchy import im.vector.matrix.android.R import im.vector.matrix.android.api.permalinks.PermalinkFactory @@ -173,14 +174,27 @@ internal class LocalEchoEventFactory @Inject constructor(@UserId private val use private fun createImageEvent(roomId: String, attachment: ContentAttachmentData): Event { + var width = attachment.width + var height = attachment.height + + when (attachment.exifOrientation) { + ExifInterface.ORIENTATION_ROTATE_90, + ExifInterface.ORIENTATION_TRANSVERSE, + ExifInterface.ORIENTATION_ROTATE_270, + ExifInterface.ORIENTATION_TRANSPOSE -> { + val tmp = width + width = height + height = tmp + } + } + val content = MessageImageContent( type = MessageType.MSGTYPE_IMAGE, body = attachment.name ?: "image", info = ImageInfo( mimeType = attachment.mimeType, - width = attachment.width?.toInt() ?: 0, - height = attachment.height?.toInt() ?: 0, - orientation = attachment.exifOrientation, + width = width?.toInt() ?: 0, + height = height?.toInt() ?: 0, size = attachment.size.toInt() ), url = attachment.path diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt index 9e67ffb590..a654973899 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt @@ -189,9 +189,7 @@ class MessageItemFactory @Inject constructor( height = messageContent.info?.height, maxHeight = maxHeight, width = messageContent.info?.width, - maxWidth = maxWidth, - orientation = messageContent.info?.orientation, - rotation = messageContent.info?.rotation + maxWidth = maxWidth ) return MessageImageVideoItem_() .attributes(attributes) diff --git a/vector/src/main/java/im/vector/riotx/features/media/ImageContentRenderer.kt b/vector/src/main/java/im/vector/riotx/features/media/ImageContentRenderer.kt index 3fb559ee6d..5f65f15d42 100644 --- a/vector/src/main/java/im/vector/riotx/features/media/ImageContentRenderer.kt +++ b/vector/src/main/java/im/vector/riotx/features/media/ImageContentRenderer.kt @@ -20,7 +20,6 @@ import android.graphics.drawable.Drawable import android.net.Uri import android.os.Parcelable import android.widget.ImageView -import androidx.exifinterface.media.ExifInterface import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.engine.GlideException import com.bumptech.glide.load.resource.bitmap.RoundedCorners @@ -49,9 +48,7 @@ class ImageContentRenderer @Inject constructor(private val activeSessionHolder: val height: Int?, val maxHeight: Int, val width: Int?, - val maxWidth: Int, - val orientation: Int? = null, - val rotation: Int? = null + val maxWidth: Int ) : Parcelable { fun isLocalFile() = url.isLocalFile() @@ -152,26 +149,14 @@ class ImageContentRenderer @Inject constructor(private val activeSessionHolder: private fun processSize(data: Data, mode: Mode): Pair { val maxImageWidth = data.maxWidth val maxImageHeight = data.maxHeight - val rotationAngle = data.rotation ?: 0 - val orientation = data.orientation ?: ExifInterface.ORIENTATION_NORMAL - var width = data.width ?: maxImageWidth - var height = data.height ?: maxImageHeight + val width = data.width ?: maxImageWidth + val height = data.height ?: maxImageHeight var finalHeight = -1 var finalWidth = -1 // if the image size is known // compute the expected height if (width > 0 && height > 0) { - // swap width and height if the image is side oriented - if (rotationAngle == 90 || rotationAngle == 270) { - val tmp = width - width = height - height = tmp - } else if (orientation == ExifInterface.ORIENTATION_ROTATE_90 || orientation == ExifInterface.ORIENTATION_ROTATE_270) { - val tmp = width - width = height - height = tmp - } if (mode == Mode.FULL_SIZE) { finalHeight = height finalWidth = width