检查php中的图像类型

时间:2014-09-02 04:56:59

标签: php image

我遇到问题,检查天气图像是png,gif,jpg,jpeg。我尝试使用 getimagesize(文件路径),但它需要完整的图像路径,因为我只有 image1.jpg 的图像名称。我想在上传之前检查png,gif,jpg,jpeg的文件类型。我想要一个代码来检查类型,然后再将其上传到目录。 getimagesize(文件路径)让我警告无法打开流因为efile不在目录中,它还没有上传。我找不到任何对我有用的东西。这里的任何人都可以帮助我摆脱这个问题。这是我的代码:

list(image_width, image_height, image_type) = getimagesize("image1.jpg");
switch ($source_image_type)
{
    case IMAGETYPE_GIF:
        //some code here
    break;
    case IMAGETYPE_JPEG:
        //some code here
    break;
    case IMAGETYPE_PNG:
        //some code here
    break;
}

此代码向我发出警告,无法打开流。

2 个答案:

答案 0 :(得分:0)

使用以下功能:

string image_type_to_mime_type ( int $imagetype );

请参阅this链接。

答案 1 :(得分:0)

在php手册中有一个内置函数来获取图像类型,你可以使用exif_imagetype()做你想做的事情,

int exif_imagetype ( string $filename )

if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
    echo 'The picture is not a gif';
}

Windows用户:如果您收到致命错误“致命错误:调用未定义函数exif_imagetype()”,并且您启用了php_exif.dll,请确保启用php_mbstring.dll。你必须在php.ini中的exif之前放入mbstring,即:

extension=php_mbstring.dll
extension=php_exif.dll

您可以通过调用phpinfo()并搜索exif来检查这是否有效。 如果函数exif_imagetype()不可用, 您可以尝试以下解决方法:

if ( ! function_exists( 'exif_imagetype' ) ) {
    function exif_imagetype ( $filename ) {
        if ( ( list($width, $height, $type, $attr) = getimagesize( $filename ) ) !== false ) {
            return $type;
        }
    return false;
    }
}

如果您想在上传图片前进行检查,可以使用

if($_FILES['file_upload']['type'] != 'image/png'){
    die('Unsupported filetype uploaded.');
}