PHP imagecreatefromjpeg,imagecreatefrompng错误处理

时间:2018-06-21 12:43:38

标签: php validation png jpeg

我想省略解析提到的函数的错误消息字符串,以获取确切的错误含义。下面是解释原因。

我创建了以下功能来检查图像是否为有效的JPEG或PNG并检查其完整性:

function validateImageByCreatingImageResource($filePath)
{
    $validationResult = true;
    $exif = exif_imagetype($filePath);
    if ($exif === false) {
        $validationResult = false;
    }
    if ($exif) {
        $imageResource = false;
        switch ($exif) {
            case IMAGETYPE_JPEG:
            case IMAGETYPE_JPEG2000:
                $imageResource = @imagecreatefromjpeg($filePath);
                break;
            case IMAGETYPE_PNG:
                $imageResource = @imagecreatefrompng($filePath);
                break;
        }
        if ($imageResource !== false) {
            imagedestroy($imageResource);
        }
    }
    $error = error_get_last();
    if (is_array($error)) {
        error_clear_last();
        $validationResult =  false;
    }
    return $validationResult;
}

现在,我可以检测到错误,但是问题出在它们的处理上。例如,这是2个类型为 E_NOTICE 的错误:

  1. 原因:文件结尾无效(错误的EOI标记)
      

    imagecreatefromjpeg():gd-jpeg,libjpeg:可恢复的错误:过早   JPEG文件结尾

  2. 原因:EOI标记之后的其他数据(由制作照片的设备插入那里)
      

    imagecreatefromjpeg():gd-jpeg,libjpeg:可恢复的错误:无效   连续JPEG的SOS参数

我的问题:我当然可以解析错误消息字符串,但是有更好的方法分别处理这些错误吗?

此外,我没有找到其他方法(通过使用php工具)来验证图像完整性。

===================================编辑============ =======================

要澄清更多:我需要确定图像到底有什么问题,因为我需要处理将图像部分上传到服务器的情况,并允许有效的图像,但是在End Of之后文件末尾有其他信息图像标记。

array getimagesize ( string $filename [, array &$imageinfo ] )

为数组提供以下信息:

[
    0 => integer width
    1 => integer height
    2 => integer type
    3 => string 'width="<width>" height="<height>"'
    bits => from what i understand it is color bits
    channels => integer number of channels
    mime => mime type eg. 'image/jpeg'
]

仅当图像元数据无效时才发出警告。没有有关imagecreatefromjpeg()

中正确的SOS标记(如E_WARNING)的信息

1 个答案:

答案 0 :(得分:0)

如何?

array getimagesize ( string $filename [, array &$imageinfo ] )

返回包含图像信息的数组,如果图像无效,则返回 FALSE

http://php.net/manual/en/function.getimagesize.php