我的图像src看起来像这样
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA...
Run Code Online (Sandbox Code Playgroud)
如何提取图像类型,即; jpeg
从上面给出的src.我使用的是PHP,图像类型cacn也是png和gif.
Bor*_*éry 20
Well you have basically two options:
Probably the quicker way because it only involve splitting string, but it may be incorrect. Something like:
$data = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA.';
$pos = strpos($data, ';');
$type = explode(':', substr($data, 0, $pos))[1];
Run Code Online (Sandbox Code Playgroud)
Use getimagesize()
and it's equivalent for string:
$info = getimagesizefromstring(explode(',', base64_decode($data)[1], 2));
// $info['mime']; contains the mimetype
Run Code Online (Sandbox Code Playgroud)
测试一下:
<?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));
Run Code Online (Sandbox Code Playgroud)
这是我做的方法:
$uri = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF......."
$img = explode(',', $uri);
$ini =substr($img[0], 11);
$type = explode(';', $ini);
echo $type[0]; // result png
Run Code Online (Sandbox Code Playgroud)
我希望这会有所帮助,但正确的方法是。
$uri = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF......."
$encodedImgString = explode(',', $uri, 2)[1];
$decodedImgString = base64_decode($encodedImgString);
$info = getimagesizefromstring($decodedImgString);
echo $info['mime'];
Run Code Online (Sandbox Code Playgroud)
请不要只使用data:image/png,因为它不可靠,我可以轻松伪造该部分并向您发送 base64 编码的 .exe 文件。