SwiftでUIImageとStringの相互変換

  • このエントリーをはてなブックマークに追加

Swiftを使ってデータベースに画像をPOSTしたい場合、UIImageはそのままPOSTすることはできません、そこで今回はUIImageとStringの相互変換の処理について紹介します。(qiitaにもまとめましたが)

まずはUIImageをStringに変換する関数の例:

//UIImageをデータベースに格納できるStringに変換する
func Image2String(image:UIImage) -> String? {

    //画像をNSDataに変換
    let data:NSData = UIImagePNGRepresentation(image)

    //NSDataへの変換が成功していたら
    if let pngData = data {

          //BASE64のStringに変換する
          let encodeString:String =  
          pngData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)

          return encodeString

     }

     return nil

}

UIImagePNGの部分はJPEGに変えることもできます。

次はStringをUIImageに変換する関数の例:

//StringをUIImageに変換する
func String2Image(imageString:String) -> UIImage?{

        //空白を+に変換する
        var base64String = imageString.stringByReplacingOccurrencesOfString(" ", withString:"+",options: nil, range:nil)

        //BASE64の文字列をデコードしてNSDataを生成
        let decodeBase64:NSData? = 
        NSData(base64EncodedString:base64String, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)

        //NSDataの生成が成功していたら
        if let decodeSuccess = decodeBase64 {

            //NSDataからUIImageを生成
            let img = UIImage(data: decodeSuccess)

            //結果を返却
            return img
        }

        return nil

}

一番のポイントは空白を+に変換する処理。
例えばデータベースに保存した画像のStringをクライアントで取得した場合には本来+だった部分が空白に変換されてしまうことがあるため取得した際にはこのような変換が必要となります。

スポンサーリンク
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>