When working with image processing in iOS, particularly with CoreML and other image manipulation frameworks, developers often face a challenge with image orientation. UIImage in iOS carries orientation information, but this is not the case with CIImage. This discrepancy can lead to significant complications, especially when images need to be correctly oriented for accurate processing.

The Challenge with CIImage

Unlike UIImage, CIImage doesn’t inherently handle or store orientation data. This becomes a problem during image processing tasks, such as machine learning with CoreML, where the orientation of the image is crucial for the accuracy of the results. For instance, a facial recognition model might misinterpret features if the image is not correctly oriented.

A Swift Solution

To address this, we’ve developed a Swift extension for UIImage that ensures the image orientation is corrected before conversion to CIImage. This approach simplifies the process by handling the orientation at the earliest stage, thus maintaining consistency throughout the image processing workflow.

Here’s the gist of the code for this extension: