私が必要とするもの
私の画像srcは次のようになります
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA...
画像タイプを抽出するにはどうすればよいですか。jpeg
上記の src から。私はPHPを使用しており、画像タイプはcacnもpngとgifです。
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];
Use getimagesize()
and it's equivalent for string:
$info = getimagesizefromstring(explode(',', base64_decode($data)[1], 2));
// $info['mime']; contains the mimetype
これをテストします。
<?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));
これが役立つことを願っていますが、これを行う正しい方法は.
$uri = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF......."
$encodedImgString = explode(',', $uri, 2)[1];
$decodedImgString = base64_decode($encodedImgString);
$info = getimagesizefromstring($decodedImgString);
echo $info['mime'];
data:image/pngは信頼できないため、使用しないでください。簡単にその部分を偽造して、base64 でエンコードされた .exe ファイルを送信できます。
String[] strings = base64String.split(",");
String extension;
switch (strings[0]) {//check image's extension
case "data:image/jpeg;base64":
extension = "jpeg";
break;
case "data:image/png;base64":
extension = "png";
break;
default://should write cases for more images types
extension = "jpg";
break;
}