PHP: получить тип изображения из строки base64 - PullRequest
1 голос
/ 22 сентября 2011

Как мне получить тип изображения из строки base64? Я прочитал другой пост, похожий на этот, но он не дает тип изображения, JPEG, PNG и т. Д. Ниже мой текущий код.

$type = finfo_buffer(finfo_open(), base64_decode($b64Img), FILEINFO_MIME_TYPE);
print($type);
//prints "application/octet-stream"

Ответы [ 4 ]

2 голосов
/ 22 сентября 2011

Этот код должен работать, попробуйте:

$finfo = new finfo(FILEINFO_MIME);
echo $finfo->buffer(base64_decode($b64Img)) . "\n";
1 голос
/ 30 января 2012

Вместо FILEINFO_MIME вы также можете использовать FILEINFO_MIME_TYPE, доступный с PHP 5.3.0.

0 голосов
/ 02 июня 2016

Как только у вас есть base64 текст вашего изображения, вам просто нужно проанализировать первый его раздел, чтобы определить тип файла.Все строки base64 начинаются примерно так:

"data:image/(png|jpg|gif);base64,iVBORw0KG..."

Вам просто нужно взглянуть на часть между image/ и ;, и она скажет вам формат.

0 голосов
/ 26 ноября 2012

Вам нужно будет декодировать данные base64, а затем прочитать их магию:

// read first 12 characters out of the base64 stream then decode
// to 9 characters. (9 should be sufficient for a magic)
$magic = base64_decode(substr($b64Img, 0, 12));

// determine file type
if (substr($magic, 0, 1) == 0xff &&
    substr($magic, 1, 1) == 0xd8)
{
    // jpg
}
else if (substr($magic, 0, 1) == 0x89 &&
         substr($magic, 1, 5) == "PNG\r\n" &&
         substr($magic, 6, 1) == 0x1a &&
         substr($magic, 7, 1) == "\r")
{
    // png
}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...