Есть ли способ, чтобы PHP обнаружил поврежденное изображение? - PullRequest
5 голосов
/ 04 июля 2011

Есть ли способ заставить PHP определить, поврежден ли файл изображения и не сможет ли он отображаться правильно?

Я пытался проверить с помощью fopen и проверить, действителен ли URL, но он не сработал!

Ответы [ 6 ]

19 голосов
/ 04 июля 2011

Есть ли способ заставить PHP определить, не поврежден ли файл изображения

Если под "разбитым" вы подразумеваете "поврежденный", изменения imagecreatefrom {extension} также не смогут их прочитать:

if( imagecreatefromjpeg( $yourfile ) !== false ) {
    // image is okay.
}
3 голосов
/ 04 июля 2011

Решение Javascript (с использованием jQuery, хотя и без него можно обойтись):

<script type='text/javascript'>
    $(function(){
        var files = [
            'warning-large.png',
            'warning-large-corrupted.png',
            'http://www.example.com/none.gif',
            'http://sstatic.net/stackoverflow/img/favicon.ico'
        ];
        for ( var n in files ) {
            var img = $('<img/>');
            img.error(function(){
                alert('error:\n' + this.src);
            });
            img.load(function(){
                alert('success:\n' + this.src);
            });
            img.attr('src', files[n]);
        }
    });
</script>
3 голосов
/ 04 июля 2011

Если вы имеете в виду испорченный, как на 404, а не испорченный образ, вы всегда можете использовать что-то вроде:

if (file_exists($imageFileName)) {
  ..
}
1 голос
/ 06 августа 2015

Это работает для меня на 100% :) Я проверяю, существует ли изображение с помощью file_exists (), и если оно существует, вы поймете испорченные изображения с этим.

<img src="your_image_source" onerror="this.src='/path/to/backup/file'">
0 голосов
/ 04 июля 2011

Отличный способ просмотреть все ваши последние испорченные файлы - использовать cpanel «Error Log», который покажет вам все последние 300 испорченных файлов.

0 голосов
/ 04 июля 2011

, если файлы есть на вашем сервере, проверьте с помощью функции file_exists в php

http://php.net/manual/en/function.file-exists.php

...