Есть ли способ заставить PHP определить, поврежден ли файл изображения и не сможет ли он отображаться правильно?
Я пытался проверить с помощью fopen и проверить, действителен ли URL, но он не сработал!
fopen
Есть ли способ заставить PHP определить, не поврежден ли файл изображения
Если под "разбитым" вы подразумеваете "поврежденный", изменения imagecreatefrom {extension} также не смогут их прочитать:
if( imagecreatefromjpeg( $yourfile ) !== false ) { // image is okay. }
Решение 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>
Если вы имеете в виду испорченный, как на 404, а не испорченный образ, вы всегда можете использовать что-то вроде:
if (file_exists($imageFileName)) { .. }
Это работает для меня на 100% :) Я проверяю, существует ли изображение с помощью file_exists (), и если оно существует, вы поймете испорченные изображения с этим.
<img src="your_image_source" onerror="this.src='/path/to/backup/file'">
Отличный способ просмотреть все ваши последние испорченные файлы - использовать cpanel «Error Log», который покажет вам все последние 300 испорченных файлов.
, если файлы есть на вашем сервере, проверьте с помощью функции file_exists в php
http://php.net/manual/en/function.file-exists.php