Dans un monde où chaque image se perd aussi vite qu’elle est scrollée, James Bort impose un souffle nouveau. Derrière l’objectif, il tisse des récits de matières précieuses et de gestes minutieux. Son œuvre ne se limite pas à la simple capture : elle dévoile l’âme des coulisses, la poésie des ateliers, l’intimité des créateurs. Entre la rigueur académique et la part d’ombre révélée par le clair-obscur, son parcours éclaire les dynamiques invisibles de la mode et de la danse. Ce récit plonge au cœur d’une trajectoire hors norme, ponctuée de rencontres déterminantes, de collaborations prestigieuses et d’expérimentations esthétiques toujours en mouvement.
Comparateur d’appareils
Marque
Taille du capteur
Spécificité
// Données statiques pour « Avant » et « Après »
const dataAvant = [
{Marque: »Nikon »,SensorSize: »Full Frame »,Spec: »Polyvalence en studio »},
{Marque: »Canon »,SensorSize: »APS-C »,Spec: »Autofocus rapide et précision améliorée »},
{Marque: »Fujifilm »,SensorSize: »APS-C »,Spec: »Rendu des couleurs distinctif et mode simulation film »},
{Marque: »Sony »,SensorSize: »Full Frame »,Spec: »Technologie mirrorless avancée et stabilisation renforcée »},
{Marque: »Leica »,SensorSize: »Full Frame »,Spec: »Qualité optique légendaire »},
{Marque: »Olympus »,SensorSize: »Micro 4/3″,Spec: »Compacité extrême avec autofocus amélioré »},
{Marque: »Pentax »,SensorSize: »APS-C »,Spec: »Robustesse et résilience aux intempéries »},
{Marque: »Hasselblad »,SensorSize: »Moyen Format »,Spec: »Dynamique étendue et profondeur de champ unique »},
{Marque: »Polaroid »,SensorSize: »Instantané »,Spec: »Attrait rétro et instantanéité authentique »},
{Marque: »Lomography »,SensorSize: »35mm »,Spec: »Expérimentation créative et effets vintage »}
];
const dataApres = JSON.parse(JSON.stringify(dataAvant)); // Ici identique, mais prêt à différencier
(function{
let currentData = [];
let sortKey = « »;
let sortAsc = true;
const tableBody = document.querySelector(‘#compTable tbody’);
const viewButtons = document.querySelectorAll(‘#comparator.btn-group button’);
const searchInput = document.getElementById(‘searchInput’);
const headers = document.querySelectorAll(‘#compTable th’);
// Fonction de rendu du tableau avec filtrage
function render(data){
tableBody.innerHTML = « »;
const filtre = searchInput.value.trim.toLowerCase;
data.forEach(item => {
if (filtre && !Object.values(item).some(val => val.toLowerCase.includes(filtre))) {
return;
}
const tr = document.createElement(‘tr’);
tr.innerHTML = `
${item.Marque}
${item.SensorSize}
${item.Spec}`;
tableBody.appendChild(tr);
});
}
// Tri des données
function sortData(key) {
if (sortKey === key) {
sortAsc = !sortAsc;
} else {
sortKey = key;
sortAsc = true;
}
currentData.sort((a, b) => {
const va = a[key].toLowerCase, vb = b[key].toLowerCase;
return (va > vb ? 1 : -1) * (sortAsc ? 1 : -1);
});
}