Есть ли способ, чтобы 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
Отличный способ просмотра всех ваших последних сломанных файлов – использовать cpanel «Журнал ошибок», который покажет вам все 300 сломанных файлов.