20

私が必要とするもの

私の画像srcは次のようになります

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

画像タイプを抽出するにはどうすればよいですか。jpeg上記の src から。私はPHPを使用しており、画像タイプはcacnもpngとgifです。

4

16 に答える 16

27

Well you have basically two options:

  1. Trust the metadata
  2. Type check the image source directly

Option 1:

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];

Option 2:

Use getimagesize() and it's equivalent for string:

$info = getimagesizefromstring(explode(',', base64_decode($data)[1], 2));
// $info['mime']; contains the mimetype
于 2013-09-06T13:11:08.967 に答える
9

これをテストします。

<?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));
于 2013-09-06T13:04:29.530 に答える
6

これが役立つことを願っていますが、これを行う正しい方法は.

$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 ファイルを送信できます。

于 2018-06-20T14:52:51.933 に答える
0
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;
}
于 2019-12-31T05:16:19.003 に答える