Dans notre recherche de développement de nouveaux services pour l’imprimerie en ligne Easyflyer, nous travaillons sur la mise en place d’un outil permettant d’appliquer des effets coté serveur avec la librairie camanJs. Caman est une librairie très étendue permettant la manipulation d’image, notamment l’application de filtres comme c’est le cas dans les outils d’édition. La librairie est entierement compatible que ce soit pour une exécution coté navigateur, ou une exécution coté serveur en utilisant nodeJs.
Voici quelques étapes pour l’installation des éléments nécessaires et des modifications de fichiers sources qui ont été indispensable pour mener à bien l’opération. La procédure est basée sur une distribution Ubuntu Server 12.04.
I. Installation de nodeJs sur le serveur
L’installation se fait en utilisant apt-get :
sudo apt-get install python-software-properties sudo apt-add-repository ppa:chris-lea?node.js sudo apt-get update sudo apt-get install nodejs npm
Les 2 paquets installés sont nodeJs, le moteur d’éxécution javascript et npm, le gestionnaire de package d’installation nodeJs.
II. Installation des librairies nécesssaires à l’exécution des modules camanJs
Pour installer le module de manipulation du canvas (stream HTML5 coté serveur), il faut disposer des librairies jpeg
sudo apt-get install libcairo2-dev libjpeg8-dev # Librairie nécessaire sudo apt-get install nodejs-dev # indispensable pour utiliser node-waf npm install canvas apt-get install build-essential
Installation du module caman :
npm install caman -g
III. Correction du bug dans le fonctionnement de Camanjs
Normalement à ce stade, à chaque fois qu’on essaye d’appliquer un effet avec la librairie camanjs, on obtient une erreur. Pour la corriger, il faut modifier la source du module et le recompiler :
Dans le module canvas :
node-canvas?src?closure.h
Mettre en commentaire la ligne suivante :
void closure_destroy(closure_t *closure) { if (closure->len) { free(closure->data); // Mettre en commentaire V8::AdjustAmountOfExternalAllocatedMemory(-closure->max_len); } }
Relancer la compilation du module
npm rebuild <nom_du_module>
IV Exemple d’utilisation de camanjs
Un petit d’exemple d’utilisation de la librairie, celui-ci permet d’appliquer des effets pour changer le rendu. Dans l’exemple le rendu est un effet « vintage ». Toutes les possiblités de manipulation sont disponible ici.
var Caman; Caman = require('caman').Caman; fs = require("fs"); Caman("?home?nodejs?DSC07802.JPG", function() { this.greyscale(); this.contrast(5); this.noise(3); this.sepia(100); this.channels({ red: 8, blue: 2, green: 4 }); this.gamma(0.87); this.render(function () { this.save("?home?nodejs?DSC07802.JPG.png"); }); });
1 Comment
Mathieu
4 mars 2014 - 9 h 03 minSur ubuntu 13.04 ajouter l’installation des packages suivants avant la compilation de canvas :
apt-get install libpango1.0-dev libgif-dev build-essential g++