2012-03-30 11 views
1

Ich muss programmgesteuert überprüfen, ob das Bild, das der Benutzer als sein Hintergrundbild in meiner App ausgewählt wurde, kaputt oder beschädigt ist ....... im Grunde biete ich Benutzer mit der Option zu wähle sein eigenes Bild als Hintergrundbild. Jetzt, wenn die Bilder geladen werden, möchte ich nur überprüfen, ob es irgendwie beschädigt ist oder nicht .......Erkennen, ob ein Bild beschädigt oder defekt ist

+0

http://stackoverflow.com/questions/1977871/check-if-an-image-is-loaded-no-errors-in- Javascript –

+1

Lösung ist hier http://stackoverflow.com/questions/6568247/is-there-any-way-to-have-php-detect-a-corrupted-image –

Antwort

2

Wenn Sie stattdessen nach einer PHP-Lösung statt einer Javascript-Lösung suchen (welches das Potenzial Duplikate bieten nicht), können Sie GDs getimagesize() in PHP verwenden und sehen, was es zurückgibt. Es wird false zurückgegeben und ein Fehler ausgegeben, wenn das angegebene Bildformat nicht gültig ist.

+0

Bild ist beschädigt, aber Bildgröße kommt noch. – Gulshan

3

Das scheint für mich zu arbeiten.

<?php 
    $ext = strtolower(pathinfo($image_file, PATHINFO_EXTENSION)); 
    if ($ext === 'jpg') { 
    $ext = 'jpeg'; 
    } 
    $function = 'imagecreatefrom' . $ext; 
    if (function_exists($function) && @$function($image_file) === FALSE) { 
    echo 'bad img file: ' . $image_file . ' ' . $function; 
    } 
?> 
+0

Sie haben einen Tippfehler bei '' echo 'bad img file:'. $ Image_Datei. ''. $ function); '' ' – aki

+0

* Benutze stattdessen: *' $ function = 'imagecreatefrom'. strtolower ($ ext); ' –

2

Hier ist ein PHP CLI Skript auf einem Verzeichnis voller Bilder laufen kann und es protokolliert, welche Dateien auf der Basis eines imagecreatefrom***() Test beschädigt sind. Es kann nur die fehlerhaften Dateien protokollieren oder Maßnahmen ergreifen und sie löschen.

https://github.com/e-ht/literate-happiness

Sie können auch Plug in einer Datenbank Aktion auf das Bild Wege zu beschreiten, die Sie gespeichert haben. Hier

ist das Fleisch der Funktion nutzt:

$loopdir = new DirectoryIterator($dir_to_scan); 
foreach($loopdir as $fileinfo) { 
    if(!$fileinfo->isDot()) { 
     $file = $fileinfo->getFilename(); 
     $file_path = $dir_to_scan . '/' . $file; 
     $mime_type = mime_content_type($file_path); 
     switch($mime_type) { 
      case "image/jpg": 
      case "image/jpeg": 
       $im = imagecreatefromjpeg($file_path); 
       break; 
      case "image/png": 
       $im = imagecreatefrompng($file_path); 
       break; 
      case "image/gif": 
       $im = imagecreatefromgif($file_path); 
       break; 
     } 
     if($im) { 
      $good_count++; 
     } 
     elseif(!$im) { 
      $bad_count++; 
     } 
    } 
} 
Verwandte Themen