Strumenti Utente

Strumenti Sito


programmazione:php:controllare_file_immagine

Controllare se un file è veramente un'immagine

Autore: Fabio Di Matteo
Ultima revisione: 07/01/2026 10:38

Controlli non pevisti in questa funzione: dimenzione file, estenzione.

function checkRealImage($path)
{
    $allowedMime = [
        'image/jpeg',
        'image/png',
        'image/gif',
    ];
 
 
    $mime=mime_content_type($path);
    if (!getimagesize($path)) return false;
    if (!in_array($mime,$allowedMime)) return false;
    return true;
}

Convertire l'immagine per evitare problemi di sicurezza

Anche se abbiamo stabilito che il file contiene un'immagine è sempre meglio ricreare una nuova immagine con il contenuto dell'originale.

<?php
function convertToPng(string $srcPath, string $dstPath, int $quality = 6): bool
{
    if (!file_exists($srcPath)) {
        trigger_error("Source file not found: $srcPath", E_USER_WARNING);
        return false;
    }
 
    $info = getimagesize($srcPath);
    if ($info === false) {
        trigger_error("Unable to read image information: $srcPath", E_USER_WARNING);
        return false;
    }
 
    $mime = $info['mime'];
    switch ($mime) {
        case 'image/jpeg':
            $img = imagecreatefromjpeg($srcPath);
            break;
        case 'image/gif':
            $img = imagecreatefromgif($srcPath);
            break;
        case 'image/bmp':
            $img = imagecreatefrombmp($srcPath);
            break;
        case 'image/webp':
            $img = imagecreatefromwebp($srcPath);
            break;
        case 'image/png':
            $img = imagecreatefrompng($srcPath);
            break;
        default:
            trigger_error("Unsupported format: $mime", E_USER_WARNING);
            return false;
    }
 
    if ($img === false) {
        trigger_error("Error loading image: $srcPath", E_USER_WARNING);
        return false;
    }
 
    $saved = imagepng($img, $dstPath, $quality);
 
 
    if (!$saved) {
        trigger_error("Error writing PNG file: $dstPath", E_USER_WARNING);
        return false;
    }
 
    return true;
}
?>
programmazione/php/controllare_file_immagine.txt · Ultima modifica: 07/01/2026 21:26 da Fabio Di Matteo