有没有办法让PHP检测到损坏的图像?

时间:2011-07-04 06:55:42

标签: php image detect corrupt

有没有办法让PHP确定图像文件是否已损坏且无法正常显示?

我尝试检查fopen并检查网址是否有效,但是没有效果!

6 个答案:

答案 0 :(得分:19)

  

有没有办法让PHP确定图像文件是否已损坏

如果被破坏则意味着损坏,imagecreatefrom{extension}将无法读取更改:

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

答案 1 :(得分:3)

如果你的意思是像404中那样破碎而不是腐败的形象,你可以随时使用以下内容:

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

答案 2 :(得分:3)

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 :(得分:1)

这适用于我100%:)我测试文件是否存在于file_exists(),如果它存在,你将用这个捕获损坏的图像。

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

答案 4 :(得分:0)

如果您的服务器上有文件,请使用php中的file_exists函数进行检查

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

答案 5 :(得分:0)

查看所有最新损坏文件的好方法是使用cpanel“错误日志”,它会显示所有最近300个损坏的文件。