gpt4 book ai didi

php - 如何防止在php中使用GD函数imagecreatefrom*时出现 "is not a valid image file"错误?

转载 作者:行者123 更新时间:2023-12-02 07:09:01 24 4
gpt4 key购买 nike

我正在对上传的图像使用 imagecreatefromgif/imagecreatefromjpeg/imagecreatefromjpeg 函数,当图像损坏时有时会出现错误(例如警告:imagecreatefromgif(): ... 不是有效的 GIF 文件)。我阅读了很多关于这个主题的帖子,但找不到“有效”的答案。

我确实尝试了以下一些方法来验证图像(如其他帖子中所建议的那样),但它们都不适用于所有情况。如果图像没有标题信息,则以下方法有效,但如果图像具有标题/mime 类型信息并且已损坏,则无效。

if( imagecreatefromjpeg($uploaded_image) !== false ) {
// image is okay.
}

try {
$test = imagecreatefrompng($uploaded_image);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}

使用 getimagesize($uploaded_image);//如果图像无效,将返回 false 或错误。

这些情况都不适用于具有 header 信息/mime 类型信息的损坏图像文件。

我想防止出现这些错误,如果可能的话,检测图像是否未损坏并且可以毫无问题地使用任何 imagecreatefromgif/imagecreatefromjpeg/imagecreatefromjpeg 函数。如果损坏,我想显示错误消息而不是运行函数。我正在寻找 PHP 中的解决方案。

感谢您的帮助和建议。

最佳答案

你可以试试

$gd = @imagecreatefromstring(file_get_contents($file_path));    
if ($gd === false) {
throw new Exception ('Image is corrupted');
}

它应该适用于 gd 已知的大多数图像格式。此外,如果您需要特定的错误消息,您可以使用 error_get_last()。

@ 将抑制错误消息,并且 imagecreatefromstring 会尝试打开已知的图像格式。如果失败,$gd 的值为“false”并且不会抛出任何错误消息。

编辑:

请注意,在此示例中,@ operator 还将抑制来自 file_get_contents 函数的任何错误。

关于php - 如何防止在php中使用GD函数imagecreatefrom*时出现 "is not a valid image file"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com