créer une app
de Transformation de photos
avec cordova
ou comment faire en hybride une app traditionnellement développée en natif ?
@ClementRicateau
les app leaders du marché
prendre des photos
afficher une galerie d'images
rogner des photos
partager les images
transformer les photos
objectif du projet
prendre des photos
rogner les photos
Pas de plugin cordova satisfaisant
Librairie destinée au web
transformer les photos
transformer les photos
Nombre d'itérations ?
Poids du style ?
Autres paramètres...
transformer les photos
=
$$$
galerie d'images
partager les images
<button
onclick="window.plugins.socialsharing.shareViaFacebook(
'Message via Facebook',
null /* img */,
null /* url */,
function() {
console.log('share ok')
},
function(error) {
console.error(error)
})"
>msg via Facebook</button>
partager les images
shareViaInstagram(imagePath, cb) {
let canvas, context, imageDataUrl;
const img = new Image();
img.onload = () => {
canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
context = canvas.getContext('2d');
context.drawImage(img, 0, 0);
try {
imageDataUrl = canvas.toDataURL('image/jpeg', 1.0);
Instagram.share(imageDataUrl, cb);
}
catch(e) {
cb(e.message);
}
};
img.src = imagePath;
}
1. Créer un canvas à partir de l'image
2. Transformer ce canvas en dataURL
sauvegader les images
3. Canvas2ImagePlugin.saveImageDataToLibrary
socialsharing.saveToPhotoAlbum
1. Créer un canvas à partir de l'image
2. Transformer ce canvas en dataURL
transitions fluides
Transitions GPU
-webkit-transform: translate3d(0,0,0);
Nouvelle Webview
transitions fluides
camera-roll
camera-roll
récupérer les photos
récupérer les photos de la plus récente à la plus vieille
récupérer la date de prise de vue
avoir des photos carrées et pas étirées
pas d'impact sur la fluidité de l'app
camera-roll
{
path: "chemin de l'image"
}
récupérer les photos de la plus récente à la plus vieille
{
path: "chemin de l'image",
date: "timestamp de l'image"
}
CameraRoll.getPhotos((photo) => {
// Callback is called as many times as there are photos
// photo is an empty object when loading is finished
}
camera-roll
pas d'impact sur la fluidité de l'app
{
path: "chemin de l'image",
date: "timestamp de l'image",
thumbnailPath: 'Chemin de la miniature',
orientation: 'Orientation de la miniature'
}
génération de miniatures sur android
uniquement les photos stockées sur le téléphone
camera-roll
avoir des photos carrées et pas étirées
background-size: cover;
object-fit: cover;
en résumé
C'est possible !
L'UX est dictée par les plugins
REDIMENSIONNEMENT D'IMAGES en suspend
un nouveau plugin camera-roll
un vrai problème: faire une transformation d'images qui plaise à un public
merci de votre attention
@ClementRicateau
Créer une app de transformation de photo avec cordova
By Clément Ricateau
Créer une app de transformation de photo avec cordova
- 1,291