verificați manual pentru sfârșitul jpeg de marcare ffd9 fișier (?) în PHP pentru a prinde erori de trunchiere

voturi
3

în principiu, încercarea de a elimina corupte, care se încheie prematur fișiere jpeg dintr-o colecție. am gândit că dacă la sfârșitul markerul fișier a fost absent atunci a însemnat imaginea este trunchiat și, prin urmare, i-ar considera nevalabilă pentru scopurile mele. este această metodă de verificare a sunetului? dacă da orice idei despre cum i-ar putea pune în aplicare acest lucru în php?

noroc

Întrebat 22/09/2009 la 13:47
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
4

incearca asta:

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

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

Acest lucru ar încărca întregul fișier JPG în memorie și poate avea ca rezultat într-o eroare pentru fișiere mari.

Alternativă:

$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';
Publicat 22/09/2009 la 13:56
sursa de către utilizator

voturi
0

Am rezolvat această problemă cu o captură încerca și @în fața funcției:

    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));
    }
Publicat 11/11/2013 la 13:25
sursa de către utilizator

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