Cloudinary iOS SDK

Je reviens depuis un long moment d’absence avec un petit service très utile. Je vais vous présenter le SDK iOS Cloudinary. Cloudinary est un service cloud qui offre une solution pour la gestion des images. Ce service vous propose bien sûr d’uploader vos images sur le cloud et ensuite de récupérer facilement et rapidement (Cloudinary met en place un cache pour toutes vos requêtes) une image dans un format différent. Je m’explique, vous allez pouvoir récupérer votre image dans une taille différente, respectant le ratio de votre image ou en centrant dans votre image. L’api vous propose de créer un thumbnail en centrant sur le visage, puisqu’il contient un détecteur de visage automatique.

Comment installer le sdk cloudinary pour ios

Installation

Vous pouvez vous rendre sur le repository GitHub pour télécharger la dernière version du SDK (1.0.14). Attention, je leur ai proposé un fix car il faut cloner le repository en local pour ajouter dans les headers le CLLayer.h non inclus. Sans ce dernier vous n’arriverez pas à compiler.
Ou bien passer par cocoapods (non mentionné dans leur doc).

Configuration

Vous devez posséder un compte (gratuit). Si ce n’est pas encore le cas rendez-vous ici.

Il ne vous reste plus qu’a créer un objet CLCloudinary avec vos identifiants.

#import "Cloudinary.h"

CLCloudinary *cloudinary = [[CLCloudinary alloc] initWithUrl: @"cloudinary://123456789012345:abcdeghijklmnopqrstuvwxyz12@n07t21i7"];

Qui correspond de façon plus détaillé à :

CLCloudinary *cloudinary = [[CLCloudinary alloc] init];
[cloudinary.config setValue:@"n07t21i7" forKey:@"cloud_name"];
[cloudinary.config setValue:@"123456789012345" forKey:@"api_key"];
[cloudinary.config setValue:@"abcdeghijklmnopqrstuvwxyz12" forKey:@"api_secret"];

Maintenant que vous êtes connecté avec Cloudinary il ne reste plus qu’a récupérer votre première image. Imaginons que vous voulez récupérer une image qui s’appelle sample.jpg

NSString *url = [cloudinary url:@"sample.jpg"];

// http://res.cloudinary.com/n07t21i7/image/upload/sample.jpg

Mais le plus intéressant est à venir. Comme je vous l’ai dit plus haut, Cloudinary propose un service de transformation de votre image.

CLTransformation *transformation = [CLTransformation transformation];
[transformation setWidthWithInt: 100];
[transformation setHeightWithInt: 150];
[transformation setCrop: @"fill"];

NSString *url = [cloudinary url:@"sample.jpg" options:@{@"transformation": transformation}];

// http://res.cloudinary.com/n07t21i7/image/upload/c_fill,h_150,w_100/sample.jpg

Pour upload votre image vous devez faire comme suit.

Créer un object CLUploader à partir de votre CLCloudinary. Puis uploader votre image soit en NSData soit avec le pathURL.

CLUploader* uploader = [[CLUploader alloc] init:cloudinary delegate:self];
NSData *imageData = NSData *imageData = UIImageJPEGRepresentation(image, 1); // image est une UIImage
[uploader upload:imageData options:@{@"public_id": @"nom_image"}];
@interface ViewController () <CLUploaderDelegate>
@end

@implementation ViewController

...

- (void) uploaderSuccess:(NSDictionary*)result context:(id)context {
    NSString* publicId = [result valueForKey:@"public_id"];
    NSLog(@"Upload success. Public ID=%@, Full result=%@", publicId, result);
}

- (void) uploaderError:(NSString*)result code:(int) code context:(id)context {
    NSLog(@"Upload error: %@, %d", result, code);
}

- (void) uploaderProgress:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite context:(id)context {
    NSLog(@"Upload progress: %d/%d (+%d)", totalBytesWritten, totalBytesExpectedToWrite, bytesWritten);
}

@end

Tarification

Avec un compte gratuit vous allez pouvoir stocker 75,000 images et videos avec 7,500 transformations. Vous avez besoin de plus ? Le reste c’est ici.

Résumé

Je trouve se service bien complet. Le SDK malgré le peu de documentation est très simple d’intégration et d’utilisation. Je suis justement en train de l’intégrer dans l’application que je développe en ce moment.

Qu’en pensez-vous ? Allez-vous l’intégrer dans vos applications ? Dites-moi tout dans les commentaires.

Un commentaire

Laisser un commentaire