【Swift】URLの画像(Image)をドキュメントフォルダ(アプリ)内に保存する方法!

この記事からわかること
- SwiftでURLから画像を取得する方法
- 取得した画像をアプリ(Documentsディレクトリ)内に保存するには?
- Google Books APIsで本の表紙をローカルの保存する方法
\ アプリをリリースしました /
URLの画像(Image)をドキュメントフォルダ(アプリ)内に保存する方法
Swiftを使用してAPIなどから受け取った画像URLから画像(Image)を取得し、アプリのサンドボックス内のDocumentsディレクトリの中に保存する方法をまとめていきます。
おすすめ記事:iOSのファイルシステム:サンドボックス構造とは?
今回は例としてGoogle Books APIsから本の表紙を取得してローカルに保存してアプリを停止させても参照できるようにしていきたいと思います。また保存する画像ファイル名は重複を避けるためにURLを含んだファイル名にしておきます。
流れ
- APIから画像URLを取得
- URL型へキャスト
- Data型へキャスト
- UIImage型へキャスト
- Data型(jpeg)へキャスト
- writeメソッドでdocumentsディレクトリに保存
Data(contentsOf:)
でURLからデータを取得してData
型に変換しています。そこからUI Imageクラスのwrite(to:)
メソッドを使用して画像データをDocumentsディレクトリに保存しています。ファイル名をURLにするためにreplacingOccurrences
で/
を!
に変換しています。
保存してある画像を取得する方法
Documentsディレクトリの中に保存している画像データはUIImage(contentsOfFile:)
を使用して取得できます。その前にFileManager
クラスのfileExists
メソッドで存在するかどうかを識別しています。
また今回はSwift UIで使用したかったためImage
構造体に変換して返しています。
おすすめ記事:【Swift】FileManagerでファイルを保存!操作方法や格納場所
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。