6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

アニメーションGIFを写真に保存する

Posted at

アニメーションGIFを写真.app(Photos.app)に保存する方法を紹介します。

写真

UIImageViewを配置してアニメーションGIFを読み込みます。

sample1.swift
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var kImageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = NSURL(string: "http://example.com/sample.gif")!        
        let task = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: {data, response, error in
            self.kImageView.image = UIImage(data: data!)
        })
        task.resume()
    }
}

アニメーションGIF

アニメーションGIFを写真.appに保存するためにはPhotos.frameworkを利用します。

sample2.swift
import UIKit
import Photos

class ViewController: UIViewController {

    @IBOutlet weak var kImageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = NSURL(string: "http://example.com/sample.gif")!        
        let task = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: {data, response, error in
            self.kImageView.image = UIImage(data: data!)
            let url = NSURL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true).URLByAppendingPathComponent("tmp.gif")
            data?.writeToURL(url, atomically: true)
            
            PHPhotoLibrary.sharedPhotoLibrary().performChanges({
                PHAssetChangeRequest.creationRequestForAssetFromImageAtFileURL(url)
            }, completionHandler: nil)
        })
        task.resume()
    }
}

アニメーションGIFのデータを一度ファイルに書き出すのがポイントです。
UIImageWriteToSavedPhotosAlbum()PHAssetChangeRequest.creationRequestForAssetFromImage() などUIImageを引数にとるものでは1コマ目だけが保存され静止画となります。

写真.appを開くとアニメーションGIFが保存されていることがわかります。
しかし写真.appでは静止画となってしまいアニメーションが再生されません。

アニメーションGIFであることを確認するために共有をタップしてメールに添付します。
これでアニメーションGIFであることが確認できます。

アニメーションGIFの確認

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?