php根据图片内容【魔术数字】,识别图片的类型

php 图片 编程技术
发布日期 2023-03-21 更新日期 2023-05-01 阅读次数 311 文章字数 621

严格模式下,每种文件类型都有一种标识。

指的是文件的最开头的几个用于唯一区别其它文件类型的字节。

例如,jpg类型的图片,前三个字节是xffxd8xff,或者6-10个字节是JFIF或Exif。以及png图片前4个字节是x89PNG,其他类型也是同理。

所以我们手写一个php函数,根据图片的内容,校验校验图片类型,更加安全可靠【比后缀识别要高级的多】。

<?php
    //传入的参数,是图片内容字节【例如 file_get_contents,或者 curl 后获取的原始body】
    function checkImgType(string $contentStr,$isType="")
    {
        //检测是否jpg
        $head3 = substr($contentStr,0,3);
        $head4 = substr($contentStr,0,4);
        $head6_10 = substr($contentStr,6,4);
        $parseType = "";
        //解析类型
        if("xffxd8xff"==$head3 || "JFIF"==$head6_10 || "Exif"==$head6_10){
            $parseType = "jpg";
        }
        elseif("x89PNG"==$head4){
            $parseType = "png";
        }
        elseif("GIF"==$head3){
            $parseType = "gif";
        }
        //解析是否该类型?如果不是返回false
        if($isType && $parseType!=$isType){
            return false;
        }
        //返回解析到的类型,解析失败则返回""
        else{
            return $parseType;
        }

声明本文为转载,原文地址: https://www.huazstar.net/blog/post-422.html

php 图片

发表评论

相关推荐
朱丰华   |   9个月前   |   php

php判断是否被iframe

247    评论    点赞
朱丰华   |   1年前   |   php

php正则表达式定界符:异常Delimiter must not be alphanumeric or backslash

201    评论    点赞
朱丰华   |   1年前   |   php · 缓存 · opcache

php 加速、提高并发opcache

223    评论    点赞
朱丰华   |   1年前   |   正则 · 表达

正则表达式,实现if...then...else

128    评论    点赞
朱丰华   |   1年前   |   sql · php

PHP如何使用PDO批量执行SQL?

131    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 字符串

如何在 PHP 中将字符串的第一个字母转换为大写

165    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 正则

php正则表达式原生字符

95    评论    点赞
朱丰华   |   1年前   |   字符 · php · 比较

PHP比较字符串大小相关函数

120    评论    点赞
朱丰华   |   1年前   |   php

windows下编写、编译php扩展

177    评论    点赞
朱丰华   |   1年前   |   linux · php

linux下编写、编译php扩展

161    评论    点赞
朱丰华   |   1年前   |   php · 混淆 · obfuscate · git

yakpro-po混淆php代码

115    评论    点赞
朱丰华   |   1年前   |   php

php扩展编译nts的方法

97    评论    点赞
朱丰华   |   1年前   |   linux · 变量 · 环境

linux查看环境变量、设置环境变量

102    评论    点赞
朱丰华   |   1年前   |   js · php · 字符 · 字符串

php json_encode对字符串转义用法

144    评论    点赞
朱丰华   |   1年前   |   php · 捕获

php Fatal error怎么捕获

137    评论    点赞
朱丰华   |   1年前   |   php · 编译

ubuntu、centos系统从源码编译指定版本php--超详细

168    评论    点赞
朱丰华   |   1年前   |   php · git · 编译

从源码编译php

143    评论    点赞
朱丰华   |   1年前   |   php · zend · 反射 · api

php zend引擎api接口:ZENDAPI阅读,反射调用示例

134    评论    点赞
朱丰华   |   1年前   |   php · 引用 · 变量 · c语言

php扩展内存管理与引用计数

139    评论    点赞
朱丰华   |   1年前   |   zend · php · 类型 · zval

php内核zval类型,与基本类型的转换

127    评论    点赞
{{item.author_name}}   |   {{new Date(item.date*1000).log()}}   |   {{it}} ·

{{item.title}}

{{item.uv}}    评论    点赞