技術

【Swift】iPhoneのカメラで撮影した写真をJPEGファイル保存

どうも、フリーランスのITエンジニア兼ブロガー兼投資家のKerubitoです。

Swiftで「撮影した写真のファイル保存する」アプリを作ってみました。

環境は以下の通りです。

・Swiftバージョン:5
・Xcodeバージョン:11.2.1
・使用デバイス:iPhone8(13.2.2)

プロジェクトの作成

Xcodeを立ち上げ、「Create a new Xcode project」をクリックします。

xcode1

次はプロジェクトのタイプを選択します。

「Single View Application」をクリックします。

xcode2

あとはアプリやデベロッパーの名称、言語、対象デバイスを設定します。

xcode3

カメラ機能の実装

まずは写真を撮影するためのカメラ機能を実装します。

ViewControllerのviewDidAppearにて強制的にカメラを起動しちゃいます。

忘れていけないのは、カメラを使うためにはplistに「Privacy - Camera Usage Description」を追加してやる必要がありますね。

それと撮影完了のdelegateも追加。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])が撮影完了時に呼ばれるdelegate。

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {はキャンセルすると呼ばれます。

UIImageからJpegファイルを生成する

メインの処理であるUIImageからJpegファイルを生成するところを実装します。

ここではUIImageのextensionとして実装しています。

let jpgImageData = self.jpegData(compressionQuality: 1.0)

にてUIImageからJpegデータに変換。

try jpgImageData!.write(to: fileURL)

にてJpegデータからファイルを作成しています。

撮影した写真からJpegファイルを作成

最後に写真撮影とJpegファイルの作成を繋げます。

撮影完了のdelegate内にてUIImageのsaveJpegFileを呼び出します。

let image = info["UIImagePickerControllerOriginalImage"] as! UIImageでは撮影にて作成されたUIImageを取り出しています。

最終的にはアプリ領域内のdocument直下にsample.jpgとして撮影された写真が保存されます。

全体ソース

最後に全体ソースです。

ViewController.swift

UIImageExtensions.swift

ソースはgithubにもあげていますので試してみたい方は以下からどうぞ。

https://github.com/Kerubito0/UIImageToJepg

-技術

© 2024 FIRE達成のフリーランスエンジニアブログ