【问题标题】:Check if file is ANY image (general check)- PHP检查文件是否为任何图像(一般检查)- PHP
【发布时间】:2014-03-11 00:42:01
【问题描述】:

我当然可以通过exif_imagetypegetimagesize 检查mime 类型并逐个检查mime 类型...但我只想要任何图像-我不在乎什么类型...所以我想知道-可以我做这样的事情:?

// PHP manual says: Determine the type of an image
// and that Imagetype Constants are 1-17 so :
$tmp_imagetype = exif_imagetype('image.gif'); 
if ( ($tmp_imagetype>=1) && ($tmp_imagetype<=17) ) {
    echo "It is an image!";
} else{
    echo "It isn't an image.";
}

我可以依赖它吗?

当文件不是图像时会发生什么?它会只返回非图像常量值还是会引发警告或错误

谢谢

【问题讨论】:

  • 这看起来像是 stackoverflow.com/questions/15408125/… 的副本。
  • @Ashley 但这不是我在问题开头所说的(但问题名称可能会令人困惑,我已修复它)
  • 骗子有什么不同?
  • 还有你目前拥有的有什么问题?
  • @PeeHaa 我正在寻找一个自动解决方案并询问特定的 exif_imagetype - 可能的“重复”都在解决如何检测图像类型或如何一一检查它,或搜索它一个数组......我不知道我是否可以依靠我目前的解决方案

标签: php image image-processing


【解决方案1】:

你为什么不把所有类型的图像放在一个数组中,然后用这段代码检查它:

if(in_array($value, $array)) {
   //it's an image! Hooray!
}else {
  //it's not.
}

【讨论】:

  • 提示:在你的 if 中使用 in_array
  • annascott 因为我想做一般检查而不是“in_array”检查
  • 那么就用我之前用过的,在你的 if 中加上一个 ==。
  • 你不懂我。我想做 GENERAL CHECK - 如果文件是图像(请参阅赞成的答案),就像一些一般条件,我不想有>任何
【解决方案2】:

你真的不需要所有你只需要以下内容,因为 exif_imagetype 如果不是图像则返回 false

if($imagetype = exif_imagetype('image.gif')){
    // its an image
} else {
    // its not an image
}

【讨论】:

  • 啊,你是对的,我看错了手册,它确实说“找到正确的签名时,将返回适当的常量值,否则返回值为 FALSE。”。你认为我还应该在 exif_imagetype() 调用之前添加@ 吗?在检查文件太小或无文件时,我不想要任何警告...
  • @jave.web 如果需要,您可以添加 @,但出于调试目的,我通常会避免使用它们
  • 是的,我也是,我只是想知道这是否是一个完全愚蠢的想法:)
【解决方案3】:

您可以检查函数是否返回(完全)FALSE:

$file="SOMEFILE";
if(exif_imagetype($file)===FALSE){
    print("NOT IMAGE");
}else{
    print("IMAGE");
}

【讨论】:

    猜你喜欢
    • 2014-11-25
    • 2011-01-12
    • 1970-01-01
    • 2014-01-10
    • 2013-03-02
    • 1970-01-01
    • 2017-06-11
    • 2011-01-08
    • 2011-02-11
    相关资源
    最近更新 更多