use*_*191 2 php gd image imagecreatefrompng
我正在使用imagecreatefromgif/imagecreatefromjpeg/imagecreatefromjpeg函数和上传的图像,有时在图像损坏时会出现错误(例如警告:imagecreatefromgif():...不是有效的GIF文件).我阅读了很多关于这个主题的帖子,找不到"有效"的答案.
我确实尝试了以下一些来验证图像(如其他帖子所示),但它们都不适用于所有情况.如果图像没有标题信息,则以下工作,但如果图像具有标题/ mime类型信息并且已损坏,则它不起作用.
if( imagecreatefromjpeg($uploaded_image) !== false ) {
// image is okay.
}
Run Code Online (Sandbox Code Playgroud)
要么
try {
$test = imagecreatefrompng($uploaded_image);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
Run Code Online (Sandbox Code Playgroud)
要么
使用getimagesize($ uploaded_image); //如果图像无效,将返回false或错误.
这些情况都不适用于具有头信息/ mime类型信息的损坏的图像文件.
我想防止出现这些错误,如果可能的话,检测图像是否没有损坏,并且可以使用任何imagecreatefromgif/imagecreatefromjpeg/imagecreatefromjpeg函数.如果损坏,我想显示错误消息而不是运行功能.我正在寻找PHP的解决方案.
感谢您的帮助和建议.
你可以试试
$gd = @imagecreatefromstring(file_get_contents($file_path));
if ($gd === false) {
throw new Exception ('Image is corrupted');
}
Run Code Online (Sandbox Code Playgroud)
它应该适用于gd已知的大多数图像格式.此外,如果您需要特定的错误消息,可以使用error_get_last().
@将禁止显示错误消息,imagecreatefromstring尝试打开已知的图像格式.如果失败,$ gd将具有值'false'并且不会抛出任何错误消息.
编辑:
请注意,在这个例子中,@ operator也会从file_get_contents函数中获取任何错误.
| 归档时间: |
|
| 查看次数: |
6511 次 |
| 最近记录: |