Есть ли способ, чтобы PHP обнаружил поврежденный образ?

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

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

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> 

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

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

 if( imagecreatefromjpeg( $yourfile ) !== false ) { // image is okay. } 

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

 if (file_exists($imageFileName)) { .. } 

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

 <img src="your_image_source" onerror="this.src='/path/to/backup/file'"> 

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

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

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