Обнаружение, является ли изображение поврежденным или сломанным - PullRequest
2 голосов
/ 30 марта 2012

Мне нужно программно проверить, не повреждено ли изображение, выбранное пользователем в качестве обоев в моем приложении ....... в основном я предоставляю пользователю возможность выбрать собственное изображение в качестве обоев. Теперь, когда изображения загружаются, я просто хочу проверить, поврежден ли он или нет .......

Ответы [ 3 ]

3 голосов
/ 02 апреля 2015

Мне кажется, это работает.

<?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;
  }
?>
2 голосов
/ 16 июля 2016

Вот скрипт PHP CLI, который вы можете запустить в каталоге, полном изображений, и он будет регистрировать, какие файлы были повреждены на основе теста imagecreatefrom***().Он может просто регистрировать испорченные файлы или предпринимать действия и удалять их.

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

Вы также можете подключить его к базе данных, чтобы выполнить действия с путями к изображениям, которые вы могли сохранить.

Вот описание функции, которую оно использует:

$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++;
        }
    }
}
2 голосов
/ 30 марта 2012

Если вместо этого вы ищете решение PHP вместо решения javascript (которое потенциальные дубликаты не предоставляют), вы можете использовать GD getimagesize () в PHP и посмотреть, что оно возвращает. Он вернет false и выдаст ошибку, если предоставленный формат изображения недопустим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...