从 base64 编码的 src 字符串获取图像类型

2022-08-30 19:33:02

我需要什么

我的图像 src 看起来像这样

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA...

如何提取图像类型,即; 从上面给出的src。我使用的是PHP,图像类型也可以是png / gif / jpg。jpeg


答案 1

好吧,你基本上有两个选择:

  1. 信任元数据
  2. 类型直接检查图像源

选项 1:

可能是更快的方法,因为它只涉及拆分字符串,但它可能是不正确的。像这样:

$data = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA.';
$pos  = strpos($data, ';');
$type = explode(':', substr($data, 0, $pos))[1];

选项 2:

使用,它等效于字符串:getimagesize()

$info = getimagesizefromstring(explode(',', base64_decode($data)[1], 2));
// $info['mime']; contains the mimetype

答案 2

测试这个:

<?php

$str = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA...';

function getB64Type($str) {
    // $str should start with 'data:' (= 5 characters long!)
    return substr($str, 5, strpos($str, ';')-5);
}
var_dump(getB64Type($str));

推荐