vérifier manuellement pour la fin jpeg de ffd9 marqueurs de fichiers (?) en php pour détecter les erreurs de troncature

voix
3

essentiellement essayer de supprimer la corruption, mettant fin prématurément les fichiers jpeg d'une collection. i compris si le marqueur de fin de fichier était absent, alors que signifie l'image est tronquée et donc je considérerais invalide à mes fins. est de cette méthode de vérification du son? le cas échéant des idées de la façon dont je pourrais mettre en œuvre ce en php?

à votre santé

Créé 22/09/2009 à 13:47
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
4

essaye ça:

$jpgdata = file_get_contents('image.jpg');

if (substr($jpgdata,-2)!="\xFF\xD9") {
  echo 'Bad file';
}

Ceci charger le fichier entier JPG dans la mémoire et peut entraîner dans une erreur pour les gros fichiers.

Alternative:

$jpgdata = fopen('image.jpg', 'r'); // 'r' is for reading
fseek($jpgdata, -2, SEEK_END); // move to EOF -2
$eofdata = fread($jpgdata, 2);
fclose($jpgdata);

if ($eofdata!="\xFF\xD9") echo 'Bad file';
Créé 22/09/2009 à 13:56
source utilisateur

voix
0

J'ai résolu ce problème avec une prise d'essai et @en face de la fonction:

    try
    {
        if (!@imagecreatefromjpeg($photoPath)
            throw new Exception('The image is corrupted!');
    }
    catch(Exception $e)
    {
        $error = $e->getMessage();
        Yii::app()->user->setFlash('addphoto', Yii::t('app', $error));
    }
Créé 11/11/2013 à 13:25
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more