<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class FixLogoTransparency extends Command
{
    protected $signature = 'logo:fix-transparency';
    protected $description = 'Convertit le logo en supprimant le fond noir';

    public function handle()
    {
        $logoPath = public_path('Images/Logo.png');

        if (!file_exists($logoPath)) {
            $this->error("Logo non trouvé : {$logoPath}");
            return 1;
        }

        // Créer backup
        $backupPath = public_path('Images/Logo_backup.png');
        copy($logoPath, $backupPath);
        $this->info("✓ Backup créé : Logo_backup.png");

        try {
            $image = imagecreatefrompng($logoPath);

            if ($image === false) {
                throw new \Exception("Impossible de lire le logo");
            }

            // Activer la transparence
            imagealphablending($image, false);
            imagesavealpha($image, true);

            $width = imagesx($image);
            $height = imagesy($image);

            // Créer nouvelle image avec transparence
            $newImage = imagecreatetruecolor($width, $height);
            imagealphablending($newImage, false);
            imagesavealpha($newImage, true);

            // Transparent background
            $transparent = imagecolorallocatealpha($newImage, 0, 0, 0, 127);
            imagefill($newImage, 0, 0, $transparent);

            // Copier l'image en remplaçant le noir par transparent
            for ($x = 0; $x < $width; $x++) {
                for ($y = 0; $y < $height; $y++) {
                    $rgb = imagecolorat($image, $x, $y);
                    $colors = imagecolorsforindex($image, $rgb);

                    // Si le pixel est noir (ou presque noir), le rendre transparent
                    if ($colors['red'] < 30 && $colors['green'] < 30 && $colors['blue'] < 30) {
                        imagesetpixel($newImage, $x, $y, $transparent);
                    } else {
                        imagesetpixel($newImage, $x, $y, $rgb);
                    }
                }
            }

            // Sauvegarder
            imagepng($newImage, $logoPath);

            imagedestroy($image);
            imagedestroy($newImage);

            $this->info("✓ Logo optimisé avec transparence");
            $this->info("✓ Le fond noir a été supprimé");

            return 0;

        } catch (\Exception $e) {
            $this->error("Erreur : " . $e->getMessage());
            return 1;
        }
    }
}
