如何确定图像类型

时间:2011-07-06 14:49:25

标签: php html mime-types

我有blob数据库字段中的图片。 有没有办法检查字段的mime类型而不保存?

getimagesize() and mime_content_type()

需要文件名...

我想做这样的事情:

<img \n" . 'src="data:image/gif;base64,' . $base64 .
          '" alt="base64 img" width="80" height="15" />

4 个答案:

答案 0 :(得分:3)

当您将文件数据插入数据库时​​,您确实应该使用它保存MIME类型。检测并不完美,至少速度较慢。

无论如何:

$mime_type = finfo_buffer($f, $imgdata, FILEINFO_MIME_TYPE);

来自:Detecting image type from base64 string in PHP

答案 1 :(得分:1)

您可以检查二进制文件中的前几个字节来确定这一点。这称为检查“文件签名”。

以下是我用来编写自己的代码的一些有用的链接:

答案 2 :(得分:0)

据我所知,你不能这样做。实际上,您应始终将图像类型与blob图像数据一起存储在数据库中。

但基本上你只需打印blob数据并设置标题即可在浏览器中显示图像。

header ("Content-type: image/jpeg");
$sql = "SELECT blobfield FROM table WHERE ...";
$result = mysql_query($sql, $conn);
$img = mysql_fetch_row($result);
print $img[0];

答案 3 :(得分:0)

这是可能的,但您必须了解您可能遇到的图像类型。例如,GIF在数据的前三个字节中显示“GIF”。

http://www.onicos.com/staff/iz/formats/gif.html

使用此信息,您可以检查blob中的流并采取相应措施。不确定你是否关心那么多工作,但它是可行的。