# CDN Laravel - Service de conversion et redimensionnement d'images

Ce projet Laravel fournit un service CDN simple pour la conversion et le redimensionnement d'images.

## Fonctionnalités

- Conversion automatique d'images vers WebP, JPEG, PNG
- Redimensionnement avec conservation des proportions
- Cache des images traitées
- Support des paramètres de requête

## Utilisation

### URL de base
```
https://cdn.mozartdigital.docker/assets/programmes/images/{nom_fichier}
```

### Paramètres de requête

- `width` : Largeur souhaitée (en pixels)
- `height` : Hauteur souhaitée (en pixels)
- `format` : Format de sortie (webp, jpg, png) - par défaut: webp

### Exemples d'utilisation

1. **Image originale** :
   ```
   /assets/programmes/images/1111_620cfb6fc5eb6.jpg
   ```

2. **Redimensionnement avec largeur** :
   ```
   /assets/programmes/images/1111_620cfb6fc5eb6.jpg?width=415
   ```

3. **Redimensionnement avec largeur et hauteur** :
   ```
   /assets/programmes/images/1111_620cfb6fc5eb6.jpg?width=415&height=239
   ```

4. **Conversion en WebP avec redimensionnement** :
   ```
   /assets/programmes/images/1111_620cfb6fc5eb6.jpg?width=415&height=239&format=webp
   ```

## Structure des dossiers

```
public/
├── assets/
│   └── programmes/
│       └── images/          # Images originales
storage/
└── app/
    └── cache/
        └── images/          # Images traitées en cache
```

## Installation

1. Installer les dépendances :
   ```bash
   composer install
   ```
   Sur un serveur en **PHP 8.5**, si Composer refuse à cause des contraintes (php 8.1–8.4) :
   ```bash
   composer install --ignore-platform-reqs
   ```

2. Configurer l'environnement :
   ```bash
   cp .env.example .env
   php artisan key:generate
   ```

3. Créer les dossiers nécessaires :
   ```bash
   mkdir -p storage/app/cache/images
   mkdir -p public/assets/programmes/images
   ```

4. Configurer les permissions :
   ```bash
   chmod -R 777 storage
   chmod -R 777 bootstrap/cache
   ```

## Configuration Docker

Le projet inclut une configuration Docker complète avec :

- **Nginx** : Configuration optimisée pour les assets avec cache et compression
- **PHP-FPM 8.4** : Configuration optimisée pour le traitement d'images
- **Traefik** : Configuration pour le routage automatique

### Variables d'environnement

Créer un fichier `.env.local` avec :
```bash
SERVER_NAME=cdn.mozartdigital.docker
```

### Configuration Nginx

La configuration Nginx est optimisée pour :
- Cache des assets statiques (1 an)
- Compression gzip
- Redirection intelligente vers PHP pour le traitement d'images
- Headers de sécurité
- Protection des fichiers sensibles

## Déploiement avec Docker

Le projet inclut un `docker-compose.yml` pour le déploiement avec Docker.

```bash
docker-compose up -d
```

## Cache

Les images traitées sont mises en cache dans `storage/app/cache/images/` pour améliorer les performances. Le cache est automatiquement géré et les images sont servies avec des headers de cache appropriés.

## Formats supportés

- **Entrée** : JPG, JPEG, PNG, WebP
- **Sortie** : WebP (par défaut), JPG, PNG

## Exemple complet

Pour l'URL demandée :
```
cdn.mozartdigital.docker/assets/programmes/images/1111_620cfb6fc5eb6.jpg?width=415&height=239
```

Le système :
1. Cherche l'image originale dans `public/assets/programmes/images/1111_620cfb6fc5eb6.jpg`
2. La redimensionne à 415x239 pixels
3. La convertit en WebP (par défaut)
4. Met en cache le résultat
5. Retourne l'image traitée