使用图像流确定扩展类型

时间:2012-04-13 23:09:11

标签: php image-processing gd

我正在为我的上传服务开发一个API系统(在PHP中)。目前,我支持从file_get_contents,fread等发送图像数据作为二进制数据的选项,或者使用基于64的系统对其进行编码。我试图从这个二进制/ base64数据确定上传到我的服务的图像的扩展类型。如果它是base64,那么我解码它然后处理它。

我现在有以下内容:

// We need to figure it out ourselves
if ($type === "")
{
    // Let's see if it is a base64 file
    $base64 = $this->checkBase64Encoded($file_data);

    // We got a 64 based file or binary
    $type = $base64 === TRUE ? "base64" : "binary";
}

if ($type == "binary")
{
    $im = imagecreatefromstring($file_data);

}

我想看看是否可以确定用于保存文件的图像扩展名类型。你们有什么建议?我读了一些关于使用getimagesize()的内容?虽然我不确定这一点。有没有办法临时保存文件,处理它,然后重命名它?

我还计划在检查扩展名之前使用它来测试图像是否是有效图像,但我不确定如何使用getimagesize()函数:

try
        {
            // Get the width and height from the uploaded image
            list($width, $height) = getimagesize($file['tmp_name']); // I'm not sure what to put here instead of $file['tmp_name']
        }
        catch (ErrorException $e)
        {
            // Ignore read errors
        }

        if (empty($width) OR empty($height))
        {
            // Cannot get image size, cannot validate
            return FALSE;
        }

如果我不清楚,请随时询问任何澄清。非常感谢:)。

1 个答案:

答案 0 :(得分:4)

您正在寻找fileinfo功能,尤其是finfo_buffer()