xyk blog

最近は iOS 開発の記事が多めです。

UIImage と NSData の相互変換

環境: Swift2.0

UIImage -> NSData

UIImagePNGRepresentation関数、またはUIImageJPEGRepresentation関数を使う。

関数定義

// return image as PNG. May return nil if image has no CGImageRef or invalid bitmap format
public func UIImagePNGRepresentation(image: UIImage) -> NSData?

// return image as JPEG. May return nil if image has no CGImageRef or invalid bitmap format. compression is 0(most)..1(least)
public func UIImageJPEGRepresentation(image: UIImage, _ compressionQuality: CGFloat) -> NSData?

PNG 形式の画像データとして取り出す。

let data: NSData? = UIImagePNGRepresentation(image)

JPEG 形式の画像データとして取り出す。

let data: NSData? = UIImageJPEGRepresentation(image, 0.8) // 圧縮率 0(most)..1(least)

NSData -> UIImage

UIImage クラスに NSData を引数に渡すコンストラクタがある。

public init?(data: NSData)

これを使ってインスタンスを作成すればOK。

let image: UIImage? = UIImage(data: data)

NSData が Optional の場合は flatMap を使うとすっきり書ける。

let image: UIImage? = data.flatMap(UIImage.init)