我想省略解析提到的函数的错误消息字符串,以获取确切的错误含义。下面是解释原因。
我创建了以下功能来检查图像是否为有效的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 的错误:
imagecreatefromjpeg():gd-jpeg,libjpeg:可恢复的错误:过早 JPEG文件结尾
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()
答案 0 :(得分:0)
如何?
array getimagesize ( string $filename [, array &$imageinfo ] )
返回包含图像信息的数组,如果图像无效,则返回 FALSE 。