[Swift] UIImageからCGImageを作成すると、画像が90度など回転してしまう件への対策
こんにちは、@yoheiMuneです。
今日は、Swiftで画像加工をする際に、なぜか回転してしまう問題の対応方法を、ブログに書きたいと思います。
調べてみると、
最後になりますが本ブログでは、Swift、PHP、フロントエンド、Python、サーバー、インフラ、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
今日は、Swiftで画像加工をする際に、なぜか回転してしまう問題の対応方法を、ブログに書きたいと思います。
目次
何が問題か
UIImageを加工しようと思い、CGImageやCIImageを作成して加工処理を行い、その後にUIImageを生成すると、画像が回転してしまう問題がありました。調べてみると、
UIImage -> CGImage -> UIImage
と変換していく過程で、向きのパラメータが失われたことが原因のようでした。// 加工元の画像 let uiImage = UIImage(named: "sample.png") // CGImageに変換 let cgImage = uiImage.cgImage // 色々と加工処理... // CGImage から UIImage に変換. let uiImage2 = UIImage(cgImage: cgImage, scale: 0, orientation: nil)ここで問題として、CGImageからUIImageを作成する際に、
orientation
を明示的に指定する必要があり、この指定がないと、画像が90度など回転してしまいます。オリジナル画像の方向パラメータを使って対処する
どうすれば良いかというと、元画像の方向(orientation)を使うことで対処ができます。// 「orientation」に、元画像の向きを指定する. let uiImage2 = UIImage(cgImage: cgImage, scale: 0, orientation: uiImage.imageOrientation)ここでは
orientation: uiImage.imageOrientation
で、元画像の向きを指定します。最後に
最初に画像が回転してしまった時には、どうしたら良いのかも検討がつかずでした。実装しているコードを1つずつ丁寧に理解すれば(今回の場合はorientation
パラメータを理解すれば)、対応できる内容でした。最後になりますが本ブログでは、Swift、PHP、フロントエンド、Python、サーバー、インフラ、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!