Is there any way to have PHP detect a corrupted im

2019-01-25 16:10发布

Is there any way to have PHP determine whether an image file is corrupted and will not be able to display properly?

I've tried to check with fopen and check whether the URL is valid, but it hasn't worked!

6条回答
Viruses.
2楼-- · 2019-01-25 16:49

If you mean broken as in a 404, and not a corrupt image, you can always use something along the lines of:

if (file_exists($imageFileName)) {
  ..
}
查看更多
贪生不怕死
3楼-- · 2019-01-25 16:51

A great way to view all your latest broken files is to use cpanel "Error Log" which will show you all the last 300 broken files.

查看更多
家丑人穷心不美
4楼-- · 2019-01-25 16:54

Javascript solution (with involving jQuery, though this should be possible to do without it too):

<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>
查看更多
贼婆χ
5楼-- · 2019-01-25 16:59

This works for me 100% :) I test if image exists by file_exists() and if it exists, you will catch corrupted images with this.

<img src="your_image_source" onerror="this.src='/path/to/backup/file'">
查看更多
做自己的国王
6楼-- · 2019-01-25 17:07

Is there any way to have PHP determine whether an image file is broken

If by broken you mean corrupted, changes are the imagecreatefrom{extension} won't be able to read them either:

if( imagecreatefromjpeg( $yourfile ) !== false ) {
    // image is okay.
}
查看更多
戒情不戒烟
7楼-- · 2019-01-25 17:08

if the files are there on your server check using file_exists function in php

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

查看更多
登录 后发表回答