【Swift x iOSアプリ開発】アプリの階層内に画像を保存&読み込み

swiftiOSアプリ開発/Swift
この記事は約3分で読めます。

はじめに

あるアプリにおいてURL先の画像をアプリのディレクトリ内に保存し、
さらに、その保存した画像を読み込んで表示する方法をまとめておきます。

 コード

その1:URLから画像を取得&保存する

まずはじめに、画像を保存するパスを生成します。

myImageName:String = "sample"
func getDocumentsURL() -> NSURL {
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
return documentsURL
}

func fileInDocumentsDirectory(filename: String) -> String {

let fileURL = getDocumentsURL().URLByAppendingPathComponent(filename)
return fileURL.path!

}

let imagePath = fileInDocumentsDirectory(myImageName)

実際に生成されたパスをみてみるとアプリ下のDocumentにsampleという名前で保存されています。

/var/mobile/Containers/Data/Application/3B436B9C-6A6D-4215-B64A-DF84148DA737/Documents/sample

次に生成した画像パスを用いて実際に保存を行ないます。

func saveImage (image: UIImage, path: String ) -> Bool{
//pngで保存する場合
let pngImageData = UIImagePNGRepresentation(image)
// jpgで保存する場合
let jpgImageData = UIImageJPEGRepresentation(image, 1.0)
let result = pngImageData!.writeToFile(path, atomically: true)

return result
}

saveImg(image, imagePath)

2:保存した画像をロードする。

先ほどのimagePathをCoreDataもしくは変数などに格納しておき、そのパスを使って画像をロードします。

func loadImageFromPath(path: String) -> UIImage? {
let image = UIImage(contentsOfFile: path)
if image == nil {
print("missing image at: \(path)")
}
return image
}

loadImageFromPath(imagePath)

3:画像を読み込んで表示

img = loadImageFromPath(imagePath)
imagetargetView.image = img

参考:
http://helpmecodeswift.com/image-manipulation/saving-loading-images

タイトルとURLをコピーしました