はじめに
アプリ開発中、画像のサイズを変更するということはよくあります。その時毎回デザイナーさんに頼み、新しい画像をもらってそれをアップロードするという流れは非常に時間が掛かります。
そんな時役に立つのが Cloudinary です。
Cloudinary とは
Cloudinary は、画像の保存や画像の加工を簡単に行えるクラウドサービスです。 指定する内容を埋め込んだ URL を使用すると、アップロードした画像をその指定した内容の通りに表示する事ができます。 もちろん、元の画像に影響は与えません。
例えば、元の画像がこれだとして

顔認識しリサイズという指定をすると、アバターに変身させることができます!

このようなことを簡単に行えるのが Cloudinary の良いところです。
事前準備
- 無料アカウントを登録
公式: http://cloudinary.com/ サインインしたら、以下のような情報が分かります。

- プロジェクトに Cloudinary のフレームワークを追加
ちなみに、Swift から Objective-C の Cloudinary iOS SDK を呼び出すためには、ブリッジングヘッダを追加する必要があります。
実装
- セットアップ
二つの方法があります。
var cloudinary:CLCloudinary! //一つ目の方法 cloudinary = CLCloudinary(url: "cloudinary://Your_API_Key:Your_API_Secret@Your_Cloud_Name") //二つ目の方法 cloudinary = CLCloudinary() cloudinary.config().setValue(Your_Cloud_Name, forKey: “cloud_name”) cloudinary.config().setValue(Your_API_Key, forKey: “api_key”) cloudinary.config().setValue(Your_API_Secret, forKey: “api_secret”)
- 画像のアップロード
func uploadToCloudinary(){
guard let uploadimageData = UIImagePNGRepresentation(self.image) else {
return
}
let uploader = CLUploader(cloudinary, delegate: self)
let public_id = "sampleImage"
uploader.upload(uploadimageData, options: ["public_id":fileId],
withCompletion:onCloudinaryCompletion, andProgress:onCloudinaryProgress)
}
アップロードに成功すると、返ってくるレスポンスの中にこのような項目が含まれています。
{
…
“url”:”http://res.cloudinary.com/da6d5qvbf/image/upload/v1466406252/sampleImage.png”
“public_id”:”sampleImage”
…
}
public_id はアップロードするときに設定したもので、未設定の場合はランダムの文字列になります。 つまり、uploader.upload(uploadimageData, options:nil, withCompletion:onCloudinaryCompletion, andProgress:onCloudinaryProgress) で画像をアップロードすることもできます。
- 画像の加工 今回はアバターのアイコンを作りたいので、顔を 90×90 のサムネイルにして円形に切り取るように指定してみます。
func getAvatarIconUrl() -> String {
let transform = CLTransformation()
transform.width = 90
transform.height = 90
transform.crop = "thumb"
transform.radius = "max"
transform.gravity = "face" //顔認識
//ここではレスポンスの public_id の文字列を使用
let source = "sampleImage.png"
return self.cloudinary.url(source options: ["transformation": transform])
}
これを実行すると以下の URL が生成されます。
"http://res.cloudinary.com/da6d5qvbf/image/upload/c_thumb,g_face,h_90,r_max,w_90/sampleImage.png"
管理画面
画像加工の設定は、管理画面でも行うことができます。

また、一回使ったことのある設定は「Transformations」に残ります。これをうまく利用すれば、swfit プロジェクトの画像加工はより便利になります。

この設定内容を編集し分かりやすいフィルタ名を与え、今後直接 CLTransformation の named プロパティにフィルタ名を設定すれば、指定する画像を取得できます。 具体的な実装:


このように編集したら、前のコードは以下のように変更できます。
func getAvatarIconUrlWithTransformName() -> String {
let transform = CLTransformation()
transform.named = "avatarIconSetting"
let public_id = "sampleImage.png"
return self.cloudinary.url(public_id, options: ["transformation": transform])
}
非常に読みやすくなりました。
まとめ
今回は Cloudinary の最も基本的な画像加工について紹介いたしました。 Cloudinary には他にも面白い機能が沢山あるので、ぜひ皆さんも試してみてください。








