Fix image EXIF orientation not being applied on macOS#66
Merged
viktorstrate merged 1 commit intoviktorstrate:mainfrom Mar 10, 2026
Merged
Fix image EXIF orientation not being applied on macOS#66viktorstrate merged 1 commit intoviktorstrate:mainfrom
viktorstrate merged 1 commit intoviktorstrate:mainfrom
Conversation
Image(importing:contentType:) on macOS does not apply EXIF orientation metadata, causing images taken in portrait mode to appear rotated 90 degrees (the raw sensor data is landscape, with an EXIF tag saying to rotate it). Fix by routing image decoding through CIImage.oriented(_:) which reads the EXIF orientation tag and applies the correct rotation transform. The result is wrapped in NSCIImageRep/NSImage for SwiftUI rendering.
Owner
|
Confirmed with sample images, thank you for the fix! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Images taken in portrait mode on a phone appear rotated 90° in the timeline. The raw sensor data is stored in landscape orientation, with an EXIF tag instructing viewers to rotate it 90° for correct display.
Root Cause
Image(importing:contentType:)on macOS does not apply EXIF orientation metadata — it renders the raw pixel data as-is. This is a macOS-specific issue; on iOS,UIImageapplies EXIF orientation automatically.Fix
Route image decoding through
CIImage.oriented(_:), which reads the EXIF orientation tag from the image metadata and applies the correct rotation/flip transform. The orientedCIImageis then wrapped inNSCIImageRep→NSImage→Image(nsImage:)for SwiftUI rendering.A
toOrientedImage(contentType:)helper is added toDataand used in both image loading paths (MessageImageViewandMatrixClient.loadImage).